cappadochian, on 18 March 2012 - 05:36 PM, said:
Sziasztok!
Már rengeteg linket megnéztem, de nem akar működni a dolog.
Van egy alap tábla, hozzá alap CRUD. Amikor a manage gombra kattintunk, akkor a táblázat fejléce alatti sorban vannak textbox-ok, amivel szűrni lehet. Namost azok közül az egyiket szeretném én kiváltani a CJuiDatePicker-rel. Rendkívül kezdő vagyok, de sztem az admin.php-ben kell valamit valahogy módosítani.
Szia,
Én ezt így használom, ez intervallumra van kitalálva, de logikusan neked is jó lehet:
A view-ba:
<?php
$dateFilter = $this->widget('zii.widgets.jui.CJuiDatePicker', array(
// 'model'=>$model,
'name' => 'Projects[date_first]',
'language' => 'hu',
'value' => $model->date_first,
'options'=>array(
'showAnim'=>'fold',
'dateFormat'=>'yy-mm-dd',
'changeMonth' => 'true',
'changeYear'=>'true',
'constrainInput' => 'false',
),
'htmlOptions'=>array(
'style'=>'width:70px;',
),
),true) ." - ". $this->widget('zii.widgets.jui.CJuiDatePicker', array(
// 'model'=>$model,
'name' => 'Projects[date_last]',
'language' => 'hu',
'value' => $model->date_last,
'options'=>array(
'showAnim'=>'fold',
'dateFormat'=>'yy-mm-dd',
'changeMonth' => 'true',
'changeYear'=>'true',
'constrainInput' => 'false',
),
'htmlOptions'=>array(
'style'=>'width:70px',
),
),true);
?>
<?php $this->widget('application.components.GridView', array(
'id'=>'projects-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'ajaxUpdate'=>true,
'afterAjaxUpdate'=>"function() {
jQuery('#Projects_date_first').datepicker(jQuery.extend({showMonthAfterYear:false}, jQuery.datepicker.regional['hu'], {'showAnim':'fold','dateFormat':'yy-mm-dd','changeMonth':'true','showButtonPanel':'true','changeYear':'true','constrainInput':'false'}));
jQuery('#Projects_date_last').datepicker(jQuery.extend({showMonthAfterYear:false}, jQuery.datepicker.regional['hu'], {'showAnim':'fold','dateFormat':'yy-mm-dd','changeMonth':'true','showButtonPanel':'true','changeYear':'true','constrainInput':'false'}));
}",
'columns'=>array(
array(
'name'=>'start_date',
'value'=>'$data->start_date',
'filter'=>$dateFilter,
'htmlOptions' => array('style'=>'width:160px;text-align:center;'),
),
....
Nálam a Projects modelbe a start_date-re kell szűrni.
A modelbe a következő kell:
class Projects extends ActiveRecord
{
public $date_first = null;
public $date_last = null;
....
$criteria=new CDbCriteria;
.....
if((isset($this->date_first) && trim($this->date_first) != "")) {
if((isset($this->date_last) && trim($this->date_last) != "")) {
$criteria->addBetweenCondition('t.start_date', $this->date_first.' 00:00:00', $this->date_last.' 23:59:59');
} else {
$criteria->addBetweenCondition('t.start_date', $this->date_first.' 00:00:00', '3000:01:01 23:59:59');
}
} else {
if((isset($this->date_last) && trim($this->date_last) != "")) {
$criteria->addBetweenCondition('t.start_date', '1000:01:01 00:00:00', $this->date_last.' 23:59:59');
}
}
Akkor is működik, ha csak az egyik mezőt állítja be vagy csak a másikat.
Remélem tudtam segíteni, és nem maradt ki semmi.
üdv