!警告英語が悪いかもしれません!
つまり、フォームの「ローカライズされた」値は、このようなことをします。
フォームをグリッドに渡した後$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で有効な米国の日付形式であることを確認します。
これがお役に立てば幸いです。