问题
I'm using Zend framework with Bootstrap and ReverseForm adapter, and have an interesting problem with it: when I use Bootstrap Datepicker in Zend Form I've the next exception:
Object provided to Escape helper, but flags do not allow recursion
There is my code of 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;
and there is my reverse form config:
'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),
)
),
Where I have a mistake?
回答1:
I had the same issue. Changing the input's type from text
to date
should fix your problem.
(https://github.com/zendframework/zf2/issues/3724)
回答2:
No the mistake apparently came from your code or maybe the point is you have to do if is an editAction not just bind but add:
$form->bind($document);
$form->get('datenais')->setValue($document->getDatenais()->format('Y-m-d'));
I know not the clean way but it will solve your problem. If your find another way i'll glad to see your piece of code.
回答3:
Its a similar issue to the one you get if you do not add the type field to the Zend Form:
'type' => 'Zend\Form\Element\Time',
The whole element is as such::
$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...)'
),
));
回答4:
This works for me.
The value convert to date format will solve the issue.
In your controller: write:
$users['usrBirthday']=$user->getBirthday()->format('d-m-Y');
$form->setData($users);
$form->bind($user);
来源:https://stackoverflow.com/questions/14760946/zend-form-bootstrap-annotation-datepicker-object-provided-to-escape-helper-but