【问题标题】:How to get entity or pass variable to Symfony2 twig form widget?如何获取实体或将变量传递给 Symfony2 树枝表单小部件?
【发布时间】:2013-01-23 22:32:57
【问题描述】:

在我的 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 }) }}

我有 img_srcentity 转储没有问题。
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 %}

bootstrap.html.twig 只是一个引导的 *form_div_layout.html.twig*
在那个小部件中,我没有 img_src 也没有 entity
任何想法如何在小部件中获取实体?它应该传递给表单小部件还是有其他方法?我做错了什么?

【问题讨论】:

    标签: forms variables twig symfony-2.1


    【解决方案1】:

    每个 symfony 表单类型都扩展了 AbstractType 类。

    AbstactType 类有方法:

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

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

    {{ asset(img_src) }}
    

    【讨论】:

    • 它仍然给我变量“实体”不存在。在控制器中:$editForm = $this->createForm(new EntityType(), $entity, array('em' => $em, 'entity' => $entity));。在 EntityType setDefaultOptions 方法中:$resolver->setRequired(array('entity')); 和在 BuildView 方法中:$view->vars['entity'] = $options['entity'];。在表单主题块 _entity_field_widget {{ dump(entity) }}。我错过了什么? (转储 $options['entity'] - 这是我需要的)
    • 视图变量仅在当前表单级别可见 - 声明的位置。在像“entity_field”这样的父小部件中,尝试使用form.parent.vars.entity、form.parent.vars.img_src
    • @DanielKorsak 感谢form.parent.vars.*。当我发现这个问题时,这就是我真正想要的。
    • 从 2.3.7 开始,您必须使用 $view->vars
    • 我认为这个答案应该用@NateBundy 写的来完成。
    猜你喜欢
    • 2016-07-17
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多