формат даты zfdatagrid - PullRequest
       9

формат даты zfdatagrid

1 голос
/ 10 февраля 2012

Я использую ZF 1.11, PHP 5.3, Windows и самую последнюю версию zfdatagrid.

Я использую

$ grid-> updateColumn ('birthday', array ('format' => array ('date', array ('date_format' => 'dd-MM-yyyy'))));

для отображения атрибута "день рождения" как dd-MM-гггг. Когда я нажимаю кнопку «Изменить» (CRUD включен), значение этого атрибута отображается как «гггг-ММ-дд». Когда пользователь нажимает кнопку сохранения, он получает сообщение об ошибке (Пожалуйста, введите дату как dd-MM-гггг).

Как я могу указать форме $ отображать значение как dd-MM-гггг вместо гггг-мм-дд?

Ответы [ 3 ]

1 голос
/ 12 февраля 2012

спасибо, но это не решает проблему.На самом деле, сейчас я добавил слушателя события для события crud.form_built.Метод, вызываемый в этом событии, просто создает новый объект Zend_Validate_Date и назначает этот валидатор соответствующему элементу zfdatagrid.

Это действительно взлом, но он работает.На самом деле, zfdatagrid на самом деле не работает с PostgreSQL, и руководство во многих местах не соответствует действительности.

1 голос
/ 10 февраля 2012

глядя на доки Я думаю, ваш код может быть немного неправильным:

$grid->updateColumn('birthday', array('format'=> array('date',array('date_format' => 'dd-MM-yyyy'))));

Возможно:

$grid->updateColumn('birthday', array('format'=> 'date',array('date_format' => 'dd-MM-yyyy')));

похоже, что у вас был дополнительный массив () на дату.

ссылка:

Дата ZFDatagrid будет запрашивать ключ в Zend_Registry с именем Zend_Locale и использовать его.Вы также можете передать в качестве аргумента экземпляр Zend_Locale или массив со следующими параметрами

  • locale
  • date_format
  • type

$ grid-> updateColumn ('field', array ('format' => 'date')) ;

0 голосов
/ 23 августа 2012

! Предупреждение, возможно, плохой английский!

для т.е. "локализованных" значений в формах я делаю что-то вроде этого ..

после передачи формы в сетку $grid->setForm($myform);

, но перед вызовом $grid->deploy();

я получаю элемент формы и устанавливаю значение вручную, как показано ниже

$Form=$grid->getForm(1); 

$dateVal = $Form->getElement('birthday')->getValue();

if(Zend_Date::isDate($dateVal,'yyyy-MM-dd', 'en'))   
   $dateObject = new Zend_Date($dateVal);

$Form->getElement('birthday')
     ->setValue($dateObject->toString('dd.MM.yyyy'))
     ->setValidators(array(new Zend_Validate_Date('dd.MM.yyyy')))
     ;

, затем регистрирую триггер события zfdatagrid "crud.before_update "

$grid->listenEvent('crud.before_update', array($this, '_updateCallback')

, который вызывает функцию из этого контроллера _updateCallback () с чем-то нестандартным, подобным этому

public function _updateCallback(Bvb_Grid_Event $e) 
{       
   $n = $e->getParam('newValues');
   list($d,$m,$y) = explode('.', $n['birthday']);       
   $sqldate = $y.'-'.$m.'-'.$d;     
   $n['birthday'] = $sqldate;

   $e->setParam('newValues', $n);
}

, или просто использует Zend Date, как раньше, для рефакторинга даты, чтобы гарантировать, чтозначение даты, которое мы хотим сохранить, находится в формате SQL в формате SQL.

надеюсь, это поможет. z.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...