如何获取实体或将变量传递给Symfony2 twig表单小部件?

CRO*_*NUS 7 forms variables twig symfony-2.1

在我的edit.html.twig中,我有:

{% form_theme edit_form 'MyBundle:Entity:form.html.twig' %}
{% set img_src = asset('120x100.jpg') %}
{{ dump(img_src) }}
{{ dump(entity) }}
{{ form_widget(edit_form, {'form_type': 'horizontal', 'img_src': img_src }) }}
Run Code Online (Sandbox Code Playgroud)

我有img_src实体转储没有问题.
form.html.twig我有:

{% extends 'MyBundle:Form:bootstrap.html.twig' %}
{% block _entity_field_widget %}
    {{ dump(img_src) }}
    {{ dump(entity) }}
    {% set type = 'hidden' %}
    {{ block('form_widget_simple') }}
{% endblock _channel_media_widget %}
Run Code Online (Sandbox Code Playgroud)

bootstrap.html.twig只是一个bootstraped*form_div_layout.html.twig*
在那个小部件中我没有img_src也没有实体.
任何想法如何获取小部件中的实体?它应该传递给窗体小部件还是有另一种方式?我究竟做错了什么?

Dan*_*sak 8

每个symfony表单类型都包含AbstractType类.

AbstactType类有方法:

public function buildView(FormView $view, FormInterface $form, array $options)
{
    $view->set('img_src', '120x100.jpg');
    $view->set('my_variable', $foo);

}
Run Code Online (Sandbox Code Playgroud)

您可以在表单类型上创建此方法,然后在树枝中创建:

{{ asset(img_src) }}
Run Code Online (Sandbox Code Playgroud)

  • 从2.3.7开始,你必须使用$ view-> vars (5认同)
  • 视图变量仅在当前表单级别可见 - 声明的位置.在像"entity_field"这样的父窗口小部件中,尝试使用form.parent.vars.entity,form.parent.vars.img_src (3认同)