Forms 在Symfony2 FormBuilder中获取变量值

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[

我正在Symfony2中构建一个表单,对于某些行,我希望将每个小部件的值的格式化版本作为
标题
属性传递,然后可以在另一个
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,并直接检索数据。这样我就可以更具体,避免在提交表单时出现错误。