首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zfdatagrid日期格式

zfdatagrid日期格式
EN

Stack Overflow用户
提问于 2012-02-10 18:44:54
回答 3查看 776关注 0票数 1

我使用的是ZF1.11、PHP5.3、Windows和最新版本的zfdatagrid。

我使用

$grid->updateColumn(‘生日’,array('format'=> array('date',array('date_format‘=>’dd-MM-yyyy‘);

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-13 02:38:14

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

这确实是一种技巧,但它是有效的。实际上,zfdatagrid并不能真正与PostgreSQL一起工作,而且该手册在很多地方都是不正确的。

票数 1
EN

Stack Overflow用户

发布于 2012-02-10 21:26:46

看看docks,我觉得你的代码可能有点不正确:

代码语言:javascript
复制
$grid->updateColumn('birthday', array('format'=> array('date',array('date_format' => 'dd-MM-yyyy'))));

也许:

代码语言:javascript
复制
$grid->updateColumn('birthday', array('format'=> 'date',array('date_format' => 'dd-MM-yyyy')));

看起来你有一个额外的数组()在日期。

参考资料:

Date ZFDatagrid将在Zend_Registry中查找名为Zend_Locale的密钥并使用它。还可以将具有以下选项

的Zend_Locale实例或数组作为参数传递

  • locale
  • date_format
  • type

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

票数 1
EN

Stack Overflow用户

发布于 2012-08-23 20:36:54

!警告可能是糟糕的英语!

对于表单中的“本地化”值,我这样做。

将表单传递给网格$grid->setForm($myform);之后

但在$grid->deploy();调用之前

我获取表单元素并手动设置值,如下所示

代码语言:javascript
复制
$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“

代码语言:javascript
复制
$grid->listenEvent('crud.before_update', array($this, '_updateCallback')

它从这个控制器_updateCallback()中调用一个函数,使用如下所示的自定义内容

代码语言:javascript
复制
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重构日期,以确保我们要保存的data值是sql有效的美国日期格式。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9226505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档