Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Twig 无法从宏访问.vars.prototype_Twig_Symfony - Fatal编程技术网

Twig 无法从宏访问.vars.prototype

Twig 无法从宏访问.vars.prototype,twig,symfony,Twig,Symfony,我正试图使用数据原型attr. 为此,我使用了一些细枝宏: 由控制器调用的视图 {# the principal view .html.twig #} {% from"AppBundle:Macros:tabRangeVal.html.twig" import tableau %} [...] {{ tableau('InstrumentSharedUtils/File',form.documentations) }} {{ tableau('Specification

我正试图使用
数据原型
attr.
为此,我使用了一些细枝
: 由控制器调用的视图

{# the principal view .html.twig #}    
{% from"AppBundle:Macros:tabRangeVal.html.twig" import tableau %}

[...]
    {{ tableau('InstrumentSharedUtils/File',form.documentations) }}
    {{ tableau('SpecificationsSheet/SpecificationSheet',form.list) }}
[...]
用于
tableau的宏

{# /src/AppBundle/Resources/views/Macros/tabRangeVal.html.twig #}
{% macro tableau(classe, arrayVar) %}
    {% from "AppBundle:Form:"~ classe ~ ".html.twig" import val %}
    {% from "AppBundle:Form:"~ classe ~ ".html.twig" import label %}
    {% from "AppBundle:Macros:dataProto.html.twig" import proDataType %}
    <div class="well well-sm">
        <h5> {{ form_label(arrayVar) }}</h5>
        <table class="table">
            <thead>
                <tr>
                    <th><button class="btn btn-default btn-add-row" type="button" id="{{ "add_#{arrayVar.vars.id}" }}"><span class="glyphicon glyphicon-plus"></span></button></th>
                    {{ label() }}
                </tr>
            </thead>
            <tbody id="{{ "container_#{arrayVar.vars.id}" }}"   data-prototype="{{  proDataType(classe, arrayVar.vars.prototype)|e }}">
                {% for i in arrayVar %}
                    <tr >
                        <td><button class="btn btn-default btn-delete-row"><span class="glyphicon glyphicon-minus"></span></button></td>
                        {{ val(i) }}
                    </tr>
                {% endfor %}
            </tbody>
        </table>
    </div>
{% endmacro %}
问题是我得到了错误

Method "name" for object "Symfony\Component\Form\FormView" does not exist in AppBundle:Form:InstrumentSharedUtils/File.html.twig at line 2
真正困扰我的是,如果我不使用宏,我可以访问这个名称(甚至其他的
prototype.vars.children

例如,以下代码可以工作:

{# principal view .html.twig #}

{% for i in form.documentations.vars.prototype %}
      {{ form_widget(i) }}
{% endfor %}
我觉得这和上面的完全一样,
form.documentations
=>
arrayVar

arrayVar.vars.prototype
=>
,以及

{% for i in value %}
    {{ form_widget(i.name) }}
    {{ form_widget(i.path) }}
    {{ form_widget(i.isExtra) }}
{% endfor %}
输出应该是相同的


你能帮我找出哪里出了问题吗?

好吧,我可能会责怪自己太愚蠢了,但写下来后,我意识到(在最后一段代码中)我犯了一个错误:

末尾的
i值
已经是name或path或isExtra…
所以当我试图访问
form.documentations.vars.prototype.name.name
它的逻辑时,我得到了一个异常

因此,解决方案是修改dataproto宏

{% macro proDataType(classe, value) %} 
<tr class='block-to-remove'>
<td><button class='btn btn-default btn-delete-row'><span class='glyphicon glyphicon-minus'></span></button></td>
{% for truc in value %}
<td>{{ form_widget(truc, { 'attr': { 'class':'form-control' } }) }}</td>
{% endfor %}
</tr>
{% endmacro %}
{%macro-proDataType(classe,value)%}
{值为%的truc的百分比}
{{form_小部件(trc,{'attr':{'class':'form-control'}}}}
{%endfor%}
{%endmacro%}

并且发送一个
arrayVar.vars.prototype
给它

好吧,我可能会鞭笞自己太愚蠢了,但是通过写下它,我意识到(在最后的代码部分)我犯了一个错误:

末尾的
i值
已经是name或path或isExtra…
所以当我试图访问
form.documentations.vars.prototype.name.name
它的逻辑时,我得到了一个异常

因此,解决方案是修改dataproto宏

{% macro proDataType(classe, value) %} 
<tr class='block-to-remove'>
<td><button class='btn btn-default btn-delete-row'><span class='glyphicon glyphicon-minus'></span></button></td>
{% for truc in value %}
<td>{{ form_widget(truc, { 'attr': { 'class':'form-control' } }) }}</td>
{% endfor %}
</tr>
{% endmacro %}
{%macro-proDataType(classe,value)%}
{值为%的truc的百分比}
{{form_小部件(trc,{'attr':{'class':'form-control'}}}}
{%endfor%}
{%endmacro%}
并向其发送
arrayVar.vars.prototype

{% macro proDataType(classe, value) %} 
<tr class='block-to-remove'>
<td><button class='btn btn-default btn-delete-row'><span class='glyphicon glyphicon-minus'></span></button></td>
{% for truc in value %}
<td>{{ form_widget(truc, { 'attr': { 'class':'form-control' } }) }}</td>
{% endfor %}
</tr>
{% endmacro %}