2012-04-23 16 views
5

Nel mio controller io pongo le seguenti variabili e li passa al template Twig:PHP & Twig: Difficoltà accesso variabili nel modello

$data = $model::all(); // returns object [phpactiverecord] 
$fields = getFields(); // returns associative array 

Nel mio modello, sto tentando il loro accesso in questo modo:

{% block rows %} 
    {% for row in data %} 
      <tr> 
    {% for field in fields %} 
       <td>{{ row[field.name] }}</td> 
    {% endfor %} 
      </tr> 
    {% endfor %} 
{% endblock %} 

In questo scenario, $ campi è definito come:

Array 
(
    [0] => Array 
     (
      [name] => id 
      [display] => Id 
     ) 

    [1] => Array 
     (
      [name] => name 
      [display] => Name 
     ) 

) 

e dati $ è un array di oggetti phpactiverecord.


Come scritto sopra, non viene emesso nulla per la riga [nome.campo].

Ecco i risultati che vedo se cambio row [field.name]:

row.name  -> outputs Value I would expect from row[field.name] 
field.name  -> outputs "name" 
row['name']  -> outputs nothing 
row[field.name] -> outputs nothing 

Secondo il Twig site: È possibile utilizzare un punto per accedere agli attributi di una variabile ((.) metodi o proprietà di un oggetto PHP o elementi di un array PHP) o la cosiddetta sintassi "subscript" ([]):

Qualche idea su come far funzionare questo?

risposta

4

Se si utilizza la versione 1.2 o successiva, provare la funzione attribute

{{ attribute(row, field.name) }} 

E 'anche menzionato sul page you linked to ...

Se si desidera ottenere un attributo dinamico su un variabile, usa invece la funzione di attributo.

+0

Quello lo corregge - grazie! – sonicradish

Problemi correlati