Php CListView寻呼机无法与Yii中的自定义CSqlDataProvider一起使用
我正试图使用CListView以Yii格式编写一份报告。在我看来,表单上有两个日期选择器,用于设置报表的数据范围。一旦我提交表单,它会正确返回第一条记录,但在我点击页面后,它会呈现我的主页而不是下一条记录 我想问题是我只在表单提交时在controller中定义了数据提供程序,但我不知道每次调用pager时如何传递数据提供程序。我试图修改控制器中的if条件,以检查页面是否已发布,但它也不起作用。我需要使用Ajax吗?重要的是,如果可能的话,我希望两个日期选择器都出现在所有页面的表格顶部 有人能帮我吗 我的控制器:Php CListView寻呼机无法与Yii中的自定义CSqlDataProvider一起使用,php,ajax,yii,Php,Ajax,Yii,我正试图使用CListView以Yii格式编写一份报告。在我看来,表单上有两个日期选择器,用于设置报表的数据范围。一旦我提交表单,它会正确返回第一条记录,但在我点击页面后,它会呈现我的主页而不是下一条记录 我想问题是我只在表单提交时在controller中定义了数据提供程序,但我不知道每次调用pager时如何传递数据提供程序。我试图修改控制器中的if条件,以检查页面是否已发布,但它也不起作用。我需要使用Ajax吗?重要的是,如果可能的话,我希望两个日期选择器都出现在所有页面的表格顶部 有人能帮我
public function actionView()
{
$model=new Kivetes;
$egyedi_etel_idk = array();
$sqlProvider = array();
if(isset($_POST['Kivetes']))
{
$model->attributes=$_POST['Kivetes'];
$count = Yii::app()->db->createCommand("SELECT COUNT(osszerendeles.etel_id)
FROM `ff_etlap` etlap
INNER JOIN `ff_etlap_osszerendeles` osszerendeles ON etlap.id = osszerendeles.etlap_id
WHERE etlap.datum >= '".$model->datum_tol."' AND etlap.datum <= '".$model->datum_ig."'
GROUP BY osszerendeles.etel_id")->queryScalar();
$sql_egyedi_etel_idk = "SELECT osszerendeles.etel_id as 'etel_id'
FROM `ff_etlap` etlap
CS INNER JOIN `ff_etlap_osszerendeles` osszerendeles ON etlap.id = osszerendeles.etlap_id
WHERE etlap.datum >= '".$model->datum_tol."' AND etlap.datum <= '".$model->datum_ig."'
GROUP BY osszerendeles.etel_id";
$sqlProvider = new CSqlDataProvider($sql_egyedi_etel_idk, array(
'keyField' => 'etel_id',
'totalItemCount'=>$count,
'pagination'=>array(
'pageSize'=>'1',
),
));
}
$this->render('view',array('model'=>$model,
'dataProvider'=>$sqlProvider));
}
}
我的看法是:
<?php setlocale(LC_ALL, "hu_HU.UTF-8"); ?>
<div class="form">
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id'=>'kivetes-form',
'enableAjaxValidation'=>false,
)); ?>
<?php
$today = date('Y-m-d');
$day_number = date('N', strtotime($today));
$first_day = $day_number - 1;
$last_day = 7- $day_number;
?>
<fieldset>
<?php echo $form->labelEx($model,'datum_tol'); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(
'name'=>'datepicker_tol',
'language'=>'hu',
'model'=>$model,
'attribute'=>'datum_tol',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'slide',//'slide','fold','slideDown','fadeIn','blind','bounce','clip','drop'
'dateFormat'=>'yy/mm/dd',
'showWeek' => 'true',
'minDate' => -$first_day,
'maxDate' => $last_day,
),
));
?>
<?php echo $form->labelEx($model,'datum_ig'); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(
'name'=>'datepicker_ig',
'language'=>'hu',
'model'=>$model,
'attribute'=>'datum_ig',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'slide',//'slide','fold','slideDown','fadeIn','blind','bounce','clip','drop'
'dateFormat'=>'yy/mm/dd',
'showWeek' => 'true',
'minDate' => -$first_day,
'maxDate' => $last_day,
),
));
?>
</br>
<?php $this->widget('bootstrap.widgets.TbButton', array(
'type'=>'primary',
'label'=>'Listázás',
'url'=>'',
'htmlOptions'=>array('onclick' => '$("#kivetes-form").submit()'),
)); ?>
</fieldset>
<?php $this->endWidget(); ?>
</div><!-- form -->
<?php
if (!empty($model->datum_tol))
{
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_kivetes',));
}
?>
分页使用GET方法工作,因此此ifisset$_POST['Kivetes']将为false,您应该对表单使用GET方法
if(isset($_GET['Kivetes']))
{
及
很抱歉我反应太晚了。你指的是我的Kivetes模型,不是页码。我照顾过他,看来我的问题没有一个简单的解决办法。看来我需要自己写传呼机了。我在Yii社区论坛上找到了这个:。
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id'=>'kivetes-form',
'enableAjaxValidation'=>false,
'method'=>'get'
)); ?>