2014-07-15 4 views
8

मैं set का उपयोग कर driverid परिभाषित करने के लिए, कोशिश कर रहा हूँ बाहर का उपयोग करें, एक वर के रूप में। मैं क्या कर रहा हूँ नीचे देखें:टहनी: एक पाश के अंदर एक चर सेट, यह बाद में उपयोग के लिए <code>for driver in assigned.driver</code> चक्र में है कि पाश

{% 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 %} 

लेकिन मैं इस त्रुटि मिलती है:

Variable "driverid" does not exist in /var/www/html/src/Device/DeviceBundle/Resources/views/List/listDevices.html.twig at line 74

कि वर openAlert() फोन पर बाद में उपयोग करने के लिए निर्धारित करने का अधिकार तरीका क्या है? या दूसरों के शब्दों में यह driver.driver.id को openAlert() फ़ंक्शन के पैरामीटर के रूप में पास करने के लिए कैसे मिलता है?

उत्तर

19

जैसा कि वे here कहते हैं, यह एक बग नहीं है, यह एक विशेषता है: लूप के अंदर परिभाषित चर को उस लूप पर स्कॉप्ड किया जाता है।

लेकिन चिंता न करें, तो आप इस तरह पाश बाहर वर परिभाषित कर सकते हैं और इसके अंदर असाइन करें,:

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

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

इस यह काम करने के लिए पर्याप्त होना चाहिए।

+0

बिल्कुल सही। धन्यवाद :) – Zl3n

3

यदि assigned.driver खाली है, तो for लूप कभी निष्पादित नहीं किया जाता है, इसलिए चर परिभाषित नहीं किया जाएगा। आपको लूप के बाहर इस चर को प्रारंभ करना है: {% set driverid = null %}

संबंधित मुद्दे