!警告可能英语不好!
对于表单中的“本地化”值,我会做这样的事情..
将表格传递到网格后$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 有效的美国日期格式..
希望这会有所帮助.. z。