zfdtagrid日期格式



我使用的是ZF 1.11、PHP 5.3、Windows和zfdtagrid的最新版本。

我使用

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

将属性"生日"显示为dd-MM-yyyy。当我单击编辑按钮(启用CRUD)时,此属性的值显示为"yyyy-MM-dd"。当用户单击保存按钮时,会收到一条错误消息(请输入日期为dd-MM-yyyy)。

如何告诉$form将值显示为dd-MM-yyyy,而不是yyyy-MM-dd?

看看码头,我认为你的代码可能有点不正确:

$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')));

看起来您在约会时多了一个array()。

参考:

日期ZFDatagrid将在Zend_Registry中查找名称为Zend_Locale并使用它Zend_Locale或具有以下选项的数组

  • 区域设置
  • 日期_格式
  • 类型

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

谢谢,但这并不能解决问题。实际上,我现在所做的是为crud.form_builded事件添加一个事件侦听器。此事件中调用的方法只需创建一个新的Zend_Validate_Date对象,并将该验证器分配给相应的zfdtagrid元素。

这确实是一个破解,但它有效。事实上,zfdtagrid并不能真正用于PostgreSQL,而且该手册在许多地方都是不正确的。

!警告可能是糟糕的英语

对于形式中的"本地化"值,我会这样做

将表单传递到网格$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')))
     ;

然后注册zfdtagrid事件触发器"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);
}

或者像以前一样使用ZendDate来重构日期,以确保我们要保存的日期值是sql有效的US日期格式。。

希望这会有所帮助。。z.

相关内容

  • 没有找到相关文章

最新更新