後で使用するために、driverid
を_for driver in assigned.driver
_サイクルの変数として使用してset
を定義しようとしています。以下を参照してください。
_{% 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 %}
_
しかし、私はこのエラーを受け取ります:
変数「driverid」は、74行目の/var/www/html/src/Device/DeviceBundle/Resources/views/List/listDevices.html.twigに存在しません。
後でopenAlert()
呼び出しで使用するようにその変数を設定する正しい方法は何ですか?または、言い換えると、_driver.driver.id
_をパラメーターとしてopenAlert()
関数に渡すにはどうすればよいですか?
彼らが言うように ここ 、これはバグではなく、機能です:ループ内で定義された変数はそのループにスコープされます。
ただし、心配しないでください。次のように、ループの外側でvarを定義し、内側に割り当てることができます。
{% set driverid = '' %} {# <-- add this line: default empty value #}
{% for driver in assigned.driver %}
...
{% set driverid = driver.driver.id %}
これはそれを機能させるのに十分なはずです。
assigned.driver
が空の場合、for
ループは実行されないため、変数は定義されません。あなたがする必要があるのは、ループの外でこの変数を初期化することです:{% set driverid = null %}