Zend的形式引导标注日期选择“对象提供的逃生帮手,但标志不允许递归”(Zend form boot

2019-08-16 20:09发布

我使用Zend框架,引导和ReverseForm适配器,与它一个有趣的问题:当我在Zend的形式使用引导日期选择器我有下一个异常:

Object provided to Escape helper, but flags do not allow recursion

还有就是我formfield的代码:

use \Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
use \Zend\Form\Annotation as ZFA;

...

/**
 * @var \DateTime
 *
 * @ODM\Date
 *
 * @ZFA\Type("ReverseForm\Element\BootstrapDatepicker")
 * @ZFA\Attributes({"type":"text"})
 * @ZFA\Options({
 *      "label":"Date",
 *      "extended": {
 *          "help": {"content": ""},
 *      }
 * })
 *
 */
private $date;

并有我的反向形式的配置:

'ReverseForm\Element\BootstrapDatepicker' => 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 \Zend\Json\Expr(1),
    )
),

在那里我有一个错误?

Answer 1:

我遇到过同样的问题。 从更改输入的类型textdate应该解决您的问题。 ( https://github.com/zendframework/zf2/issues/3724 )



Answer 2:

没有错误显然是从你的代码来也许关键是你必须做的,如果是一个editAction不仅仅是绑定,但补充:

$form->bind($document);
$form->get('datenais')->setValue($document->getDatenais()->format('Y-m-d'));

我不知道干净的方式,但它会解决你的问题。 如果您发现另一种方式,我会很高兴看到你的一段代码。



Answer 3:

你得到了一个类似的问题的一个,如果你不类型的字段添加到了Zend形式:

'type' => 'Zend\Form\Element\Time',

整个元件是这样::

   $this->add(array(
    'name' => 'officialDrawTime',
        'type' => 'Zend\Form\Element\Time',
        '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...)'
        ),
    ));


Answer 4:

这对我的作品。
值转换为日期格式将解决这一问题。
在你的控制器:写:

$users['usrBirthday']=$user->getBirthday()->format('d-m-Y');
$form->setData($users);
$form->bind($user);     


文章来源: Zend form bootstrap annotation datepicker “Object provided to Escape helper, but flags do not allow recursion”