2013-04-16 6 views
1

Я уже прочитал форум о создании пользовательского cgridview .. Я хочу использовать фильтр datetimepicker.Yii CGridview Filter Datepicker

DateTimePicker:

я могу включать в себя уже в DateTimePicker, но когда я выбираю дату, это стало ошибкой. :(.. Мой тип данных на базе данных 'метка времени' Date Error

Это код

<?php 
$this->breadcrumbs=array(
    'Events'=>array('index'), 
    'Manage', 
); 

$this->menu=array(
    array('label'=>'List Event','url'=>array('index')), 
    array('label'=>'Create Event','url'=>array('create')), 
); 

Yii::app()->clientScript->registerScript('search', " 
$('.search-button').click(function(){ 
    $('.search-form').toggle(); 
    return false; 
}); 
$('.search-form form').submit(function(){ 
    $.fn.yiiGridView.update('event-grid', { 
     data: $(this).serialize() 
    }); 
    return false; 
}); 
"); 
?> 

<h1>Manage Events</h1> 

<p> 
You may optionally enter a comparison operator (<b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, <b>&gt;=</b>, <b>&lt;&gt;</b> 
or <b>=</b>) at the beginning of each of your search values to specify how the comparison should be done. 
</p> 

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button btn')); ?> 
<div class="search-form" style="display:none"> 
<?php $this->renderPartial('_search',array(
    'model'=>$model, 
)); ?> 
</div><!-- search-form --> 

<?php $this->widget('bootstrap.widgets.TbGridView',array(
    'id'=>'event-grid', 
    'dataProvider'=>$model->search(), 
    'filter'=>$model, 
    'afterAjaxUpdate'=>"function(){jQuery('#event_date_search').datepicker({'dateFormat': 'yy-mm-dd'})}", 
    'columns'=>array(
     array(
      'type' => 'raw', 
      'name'=> 'event_image', 
      'value' => 'CHtml::image("'.Yii::app()->request->baseUrl.'/uploads/event/$data->event_image", "event_image" ,array("width"=>100))', 
      'filter'=> false, 
     ), 
     'event_name', 
     array(
      'name' => 'event_date', 
      'type' => 'raw', 
      'filter'=>$this->widget('zii.widgets.jui.CJuiDatepicker', array(
       'model'=>$model, 
       'attribute'=>'event_date', 
       'htmlOptions' => array(
        'id' => 'event_date_search' 
       ), 
       'options' => array(
        'dateFormat' => 'yy-mm-dd' 
       ) 
      ), true) 
     ), 
     array(
      'name'=>'published', 
      'filter'=>CHtml::dropDownList('Event[published]', '', 
       array(
        ''=>'', 
        '1'=>'Published', 
        '0'=>'Not Published', 
       ) 
      ), 
      'value' =>'($data->published==1)?"Published":"Not Published"', 
     ), 
     array(
      'class'=>'bootstrap.widgets.TbButtonColumn', 
     ), 
    ), 
)); 

?> 

Большое спасибо ...

ответ

0

Вы можете изменить поиск() функция класса модели. Это может быть так:

public function search() { 
    .... 
    $criteria->addCondition('DATE_FORMAT(time_field, \'%Y-%m-%d\') = ' . $this->time_field); 
    .... 
} 

, но может потребоваться t ranslate входное значение $ this-> time_field.

0

я имел точно такие же проблему вчера, и по какой-то неизвестной причине, перемещая

'dateFormat' => 'yy-mm-dd'

от варианта к htmloptions фиксированного моей проблемы. честно говоря я иметь его в обоих htmloptions и опционами, и не имеют каких-либо проблем до сих пор

'htmlOptions' => array(
        'id' => 'event_date_search', 
        'dateFormat' => 'yy-mm-dd' 
        ), 

'options' => array(
        'dateFormat' => 'yy-mm-dd' 
        ), 

надеюсь, что это помогает

0

могли бы заменить код

'options' => array(
    'dateFormat' => 'yy-mm-dd' 
) 

с

'defaultOptions' => array(
    'showOn' => 'focus', 
    'dateFormat' => 'yy-mm-dd', 
    'showOtherMonths' => true, 
    'selectOtherMonths' => true, 
    'changeMonth' => true, 
    'changeYear' => true, 
    'showButtonPanel' => true, 
) 

Надеемся, что эта помощь

Подробнее см. Ссылку http://www.yiiframework.com/wiki/318/using-cjuidatepicker-for-cgridview-filter/