【发布时间】:2014-05-03 20:21:20
【问题描述】:
我正在尝试使用 CListView 在 Yii 中整理一份报告。在我看来,我在表单上有两个日期选择器来设置报告的数据范围。一旦我提交表单,它会正确返回第一条记录,但是在我点击寻呼机后,它会呈现我的主页而不是下一条记录。
我想问题是我只在表单提交时在控制器中定义我的数据提供者,但我无法弄清楚每次调用寻呼机时如何传递我的数据提供者。我尝试修改控制器中的if 条件以检查page 是否已发布,但它也不起作用。我需要为此使用 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',));
}
?>
【问题讨论】: