57

我想要做的是获取存储在表单视图中的变量。

{% form_theme edit_form _self %}

{% block field_widget %}
{% spaceless %}
{% set type = type|default('text') %}
<input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>

{# MY CODE #}
{% if type == "file" %}
<a class="BOpreview" href="{# NEED TO REPLACE VAR HERE #}">Aperçu</a>
{% endif %}

{# MY ATTEMPT #}
{{ form.title.get('value') }}
{{ form.vars.value.url }}

{% endspaceless %}
{% endblock field_widget %}

我的表单具有 url、title 等属性,我试图在此处访问它们以在字段小部件块中使用它。

我搜索了它并来到https://groups.google.com/forum/?fromgroups=#!topic/symfony2/onor9uFte9E建议:

{{ form.title.get('value') }}
{{ form.vars.value.url }}

这对我不起作用。

注意:如果我在控制器中对 $form->createView() 执行 var_dump,我会得到:

    object(Symfony\Component\Form\FormView)[331]
    private 'vars' => 
      array (size=15)
        'value' => 
          object(Panasonic\TestEtAvisBundle\Entity\Product)[168]
            protected 'reviewArray' => 
              object(Doctrine\ORM\PersistentCollection)[234]
                ...
            protected 'testArray' => 
              object(Doctrine\ORM\PersistentCollection)[221]
                ...
            protected 'fbshareArray' => 
              object(Doctrine\ORM\PersistentCollection)[317]
                ...
            private 'id' => int 2
            private 'name' => string 'Nom du produit' (length=14)
            private 'title' => string '<span>Titre </span>' (length=19)
            private 'image' => string 'bundles/testetavis/uploads/product/0d9d9550.png' (length=47)
            private 'fbImage' => string 'bundles/testetavis/uploads/product/facebook//product_e928cd96.jpg' (length=65)
            private 'description' => string '<span>Descriptif </span>' (length=24)
            private 'url' => string 'http://www.google.com' (length=21)
            private 'creationDate' => 
              object(DateTime)[210]
                ...
            private 'modificationDate' => 
              object(DateTime)[209]
                ...
            private 'isDeleted' => int 0
        'attr' => 
          array (size=0)
            empty
        'form' => 
          &object(Symfony\Component\Form\FormView)[331]
        'id' => string 'panasonic_testetavisbundle_producttype' (length=38)
        'name' => string 'panasonic_testetavisbundle_producttype' (length=38)
        'full_name' => string 'panasonic_testetavisbundle_producttype' (length=38)

例如,我想访问该 url,但经过多次变化后似乎无法访问。包括使用 {{ value }}, {{ value.url }} 但是尽管有 vars,我可以做 {{ full_name }} 并获得 panasonic_testetavisbundle_producttype。

有任何想法吗?

Edit2:我发现了真正的问题......

Edit3:看到这个问题很受欢迎,我决定澄清我试图做的事情,以防它对处于相同情况的人有所帮助。如果您严格依赖问题所提出的问题,正如我在研究中所说的那样,Besnik 支持的确实是正确的。现在我想做的是对于每个输入类型文件,从用于呈现表单的对象中获取 url,并在输入类型文件旁边使用检索到的 url 附加预览链接。如果您尝试在我的代码中获取输入类型“文件”的表单变量,例如“{{ form.vars.value.url }}”,这将不起作用,因为如果我没记错的话,您会收到一个令牌而不是存储在对象内的 url。

4

5 回答 5

131

您可以通过 form.vars.value 访问表单的当前数据:

{{ form.vars.value.title }}

请参阅 Symfony2 表单文档:http ://symfony.com/doc/current/book/forms.html#rendering-a-form-in-a-template

使用dump函数转储变量:

{{ dump(form.vars.value) }}

如果您正在使用子表单或想要具有特定字段的值:

{{ form.FIELD.vars.VALUE }}
于 2012-09-19T14:47:34.287 回答
4

您可以使用小部件块访问父父级的值form.parent.vars

于 2013-10-24T18:27:31.617 回答
2

例如,我们想要从一个名为primerNombre的类型文本字段中呈现值,我们将需要

{{ form.vars.value.primerNombre }}

如果我们想渲染其中一个孩子的名字,我们将需要

{% for hijo in form.hijos %}
    <td><div align="left">{{ form_widget(hijo.vars.value.primerNombre) }}</div></td>
{% endfor %}

祝你好运!

于 2016-10-13T04:57:12.853 回答
1

在 Symfony > 3 中,您可以使用:

form.vars.value.Entity.someValue
于 2018-09-11T15:20:09.667 回答
0

编辑2:

最后,我确实在这里获得了 {{ value }} 中当前行的值:

{% block field_widget %}
{% spaceless %}
{% set type = type|default('text') %}
<input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ **value** }}" {% endif %}/>

{# MY CODE #}
{% if type == "file" %}
<a class="BOpreview" href="{{ value }}">Aperçu</a>
{% endif %}

{% endspaceless %}
{% endblock field_widget %}

但在我的情况下,我得到一个令牌而不是值,因为我使用的是输入类型文件。这是由于 Symfony2 中的安全措施。

于 2012-09-28T05:53:07.677 回答