Forms 在Symfony2 FormBuilder中获取变量值
我正在Symfony2中构建一个表单,对于某些行,我希望将每个小部件的值的格式化版本作为Forms 在Symfony2 FormBuilder中获取变量值,forms,symfony,themes,twig,Forms,Symfony,Themes,Twig,我正在Symfony2中构建一个表单,对于某些行,我希望将每个小部件的值的格式化版本作为标题属性传递,然后可以在另一个div中显示。 如果我没有设置格式化版本,我只会将实际的非格式化值插入div 理想情况下,我的细枝代码可能如下所示: {% block form_row %} {% spaceless %} <div class="field-display-value"> {% if attr['title'] is defined %} {{ attr[
标题
属性传递,然后可以在另一个div
中显示。
如果我没有设置格式化版本,我只会将实际的非格式化值插入div
理想情况下,我的细枝代码可能如下所示:
{% block form_row %}
{% spaceless %}
<div class="field-display-value">
{% if attr['title'] is defined %}
{{ attr['title'] }}
{% else %}
{{ form.vars.value }}
{% endif %}
</div>
<div class="field-widget">
{{ form_widget(form) }}
</div>
{% endspaceless %}
{% endblock form_row %}
$builder->add('some_field', 'text', array(
'attr' => array('title' => someFormattingFunction( this.widget.value ),
));
显然,this.widget.value
伪代码不起作用
不知道是否可能,但我不想求助于javascript疯狂。
有什么想法吗?请参阅以下文档:
必须在formBuilder上设置PRE_set_数据事件的侦听器。
然后,您将能够通过以下方式访问传递到此表单的数据:
$data = $event->getData();
现在您只需在其中添加字段。
/!\ 只有将对象传递给表单时,才会添加字段。
因此,如果在没有传递数据的情况下仍然需要字段,则必须在事件列表器函数外部添加字段,然后修改该函数内部的字段属性标题
$form = $event->getForm();
$form->add('some_field', 'text', array(
'attr' => array('title' => someFormattingFunction($data.getSomething()),
));
也许你应该用?这个有用!谢谢@zapcost。但是,我最终将实体数据作为选项传递给FormType,并直接检索数据。这样我就可以更具体,避免在提交表单时出现错误。