我正在使用带有Bootstrap和ReverseForm适配器的Zend框架,它有一个有趣的问题:当我在Zend Form中使用Bootstrap Datepicker时,我有下一个异常:
对象提供给Escape助手,但标志不允许递归
这是我的表单域代码:
use DoctrineODMMongoDBMappingAnnotations as ODM;
use ZendFormAnnotation as ZFA;
/**
* @var DateTime
*
* @ODMDate
*
* @ZFAType("ReverseFormElementBootstrapDatepicker")
* @ZFAAttributes({"type":"text"})
* @ZFAOptions({
* "label":"Date",
* "extended": {
* "help": {"content": ""},
* }
* })
*
*/
private $date;
还有我的反格式配置:
'ReverseFormElementBootstrapDatepicker' => array(
'js' => array(
'/vendor/datepicker/js/bootstrap-datepicker.js'
),
'css' => array(
'/vendor/datepicker/css/datepicker.css'
),
'template' => 'input.phtml',
'inlineJs' => "$('#%1$s').datepicker(%2$s);",
'inlineJsConfig' => array(
'format' => 'dd.mm.yyyy',
'weekstart' => new ZendJsonExpr(1),
)
),
我哪里有错?
我遇到了同样的问题。将输入的类型从text
更改为date
应该可以解决您的问题。(https://github.com/zendframework/zf2/issues/3724)
没有,错误显然来自您的代码,或者关键是如果是editAction,您必须执行以下操作:不仅绑定,还添加:
$form->bind($document);
$form->get('datenais')->setValue($document->getDatenais()->format('Y-m-d'));
我不知道这种干净的方法,但它会解决你的问题。如果你能找到另一种方法,我会很高兴看到你的代码。
如果不将类型字段添加到Zend Form:,则会出现类似的问题
'type' => 'ZendFormElementTime',
整个元素如下::
$this->add(array(
'name' => 'officialDrawTime',
'type' => 'ZendFormElementTime',
'attributes' => array(
'required' => 'required',
'type' => 'time',
'class' => 'form-control input-large',
'placeholder' => 'e.g 19:30 or 07:30 (24 hour clock)',
'pattern' => '^[0-9]{2}:[0-9]{2}$'
),
'options' => array(
'label' => 'Official draw time',
'instructions' => 'The official draw time...)'
),
));
这对我有用。
将值转换为日期格式将解决此问题
在您的控制器中:写:
$users['usrBirthday']=$user->getBirthday()->format('d-m-Y');
$form->setData($users);
$form->bind($user);