2012-05-19 3 views
1

Я новичок в структуре Yii и только начал работать на существующем веб-сайте. У меня есть страница с листингом, и мое требование состояло в том, чтобы добавить новое поле «review_date_time», и мне удалось отобразить его в листинге. Теперь мой вопрос заключается в том, как изменить формат даты и как показать пробел, если в таблице нет даты. Теперь он отображается 0000-00-00 00:00:00, если нет даты.Как отформатировать дату на странице листинга

Мой код для перечисления

$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'series-grid', 
    'dataProvider' => $model->search(), 
    'filter' => $model, 
    'columns' => array(
        array('header' => 'Category', 'name' => 'category.title'), 
        'exam_year', 
        'title', 
        'review_date_time', 
        array(
         'class' => 'CButtonColumn', 
        ), 
    ), 
)); 
+0

может быть что-то другое, кроме nullDisplay, проверить измененный ответ, прокомментировать обратную связь. –

ответ

0

Если он показывает 0000-00-00 00:00:00, то это означает, что это значение является значением по умолчанию в таблице БД, следовательно, вы» придется использовать value property из CDataColumn:

$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'series-grid', 
'dataProvider' => $model->search(), 
'filter' => $model, 
// 'nullDisplay'=>'', 
'columns' => array(
       array('header' => 'Category', 'name' => 'category.title'), 
       'exam_year', 
       'title', 
       // 'review_date_time', 
       array(
        'name'=>'review_date_time', 
        'value'=>'$data->review_date_time=="0000-00-00 00:00:00"?"":$data->review_date_time' 
       ) 
       array(
        'class' => 'CButtonColumn', 
       ), 
), 
)); 

Или попробуйте nullDisplay property из CGridView (если вы храните утратившим первостепенную afterFind форматировать нулевой, как 0000-00-00 00:00:00):

$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'series-grid', 
'dataProvider' => $model->search(), 
'filter' => $model, 
'nullDisplay'=>'', 
'columns' => array(
       array('header' => 'Category', 'name' => 'category.title'), 
       'exam_year', 
       'title', 
       'review_date_time', 
       array(
        'class' => 'CButtonColumn', 
       ), 
), 
)); 
+0

дайте мне знать, как это работает для вас, если он не работает, существует другой метод. –

+0

Да, это сработало для меня. До того, как мое значение по умолчанию для поля было ничем. Теперь я изменил его на null, и этот nullDisplay работал для меня. Можете ли вы мне помочь отформатировать дату? В массиве столбцов я пытался использовать этот массив ('name' => 'review_date_time', 'value' => date ('m/d/Y h: i: s A', $ model-> review_date_time), но это дало мне error –

+0

ok, значение должно быть «public string $ value», поэтому вам нужно использовать кавычки, проверить, как я это сделал в ответе. Теперь вы можете использовать '' value '=>' date («m/d/Y h: i: s A», $ model-> review_date_time) '' –