Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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
Php Twig:在循环内设置一个变量,在循环外使用它_Php_Symfony_Twig_Symfony 2.4 - Fatal编程技术网

Php Twig:在循环内设置一个变量,在循环外使用它

Php Twig:在循环内设置一个变量,在循环外使用它,php,symfony,twig,symfony-2.4,Php,Symfony,Twig,Symfony 2.4,我试图使用set将driverid定义为中的变量,以供分配的.driver循环中的驱动程序使用。请看下面我正在做的事情: {% for key, assigned in pgn %} <tr id="device-{{ assigned.id }}"> <td>{{ assigned.imei }}</td> <td>{{ assigned.description }}</td>

我试图使用
set
driverid
定义为
中的变量,以供分配的.driver
循环中的驱动程序使用。请看下面我正在做的事情:

{% for key, assigned in pgn %}
    <tr id="device-{{ assigned.id }}">
        <td>{{ assigned.imei }}</td>
        <td>{{ assigned.description }}</td>
        <td>
            {% for driver in assigned.driver %}
                {{ driver.driver.id }} {# check if driver.driver.id has values testing purposes - delete me #}
                {% set driverid = driver.driver.id %}

                {% if driver.driver.name != "" %}
                    {% if driver.driver.name %}
                        {{ driver.driver.name }}
                    {% else %}
                        -
                    {% endif %}
                {% endif %}
            {% endfor %}
        </td>
        <td>
            <button class="btn btn-xs btn-default"
                    onclick="openAlert({{ assigned.id }}, {{ driverid }}, 'unlink')"
                    data-original-title="{{ "devices.actions.unlink"|trans }}"
                    title="{{ "devices.actions.unlink"|trans }}">
                <i class="fa fa-times"></i>
            </button>
            <button class="btn btn-xs btn-default"
                    onclick="openAlert({{ assigned.id }}, null, 'delete')"
                    data-original-title="{{ "button.delete"|trans }}"
                    title="{{ "button.delete"|trans }}">
                <i class="fa fa-times"></i>
            </button>
        </td>
    </tr>
{% endfor %}
{%用于键,在pgn%中分配]
{{assigned.imei}}
{{assigned.description}}
{assigned.driver%中的驱动程序为%1}
{{driver.driver.id}{{#检查driver.driver.id是否具有用于测试的值-删除我}
{%set driverid=driver.driver.id%}
{%if-driver.driver.name!=“”%}
{%if-driver.driver.name%}
{{driver.driver.name}
{%else%}
-
{%endif%}
{%endif%}
{%endfor%}
{%endfor%}
但我得到了这个错误:

中不存在变量“driverid” /var/www/html/src/Device/DeviceBundle/Resources/views/List/listDevices.html.twig 第74行

设置该变量以供以后调用时使用的正确方法是什么?或者换句话说,我是如何让
driver.driver.id
将其作为参数传递给
openAlert()
函数的?

正如他们所说,这不是一个bug,而是一个特性:在循环中定义的变量的作用域是该循环

但别担心,您可以在循环外部定义var,并在内部分配它,如下所示:

{% set driverid = '' %} {# <-- add this line: default empty value #}

{% for driver in assigned.driver %}
     ...
     {% set driverid = driver.driver.id %}

{%set driverid=''%}{{code>assigned.driver
为空,则不会执行
for
循环,因此不会定义变量。需要做的是在循环外部初始化此变量:
{%set driverid=null%}