2012-04-23 31 views
5

Trong điều khiển của tôi, tôi đang thiết lập các biến sau và chuyển chúng tới các mẫu Twig:PHP & Twig: Rắc rối truy cập vào các biến trong mẫu

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

Trong mẫu của tôi, tôi đang cố gắng truy cập chúng như thế này:

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

trong kịch bản này, $ lĩnh vực được định nghĩa là:

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

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

) 

và dữ liệu $ là một mảng đối tượng phpactiverecord.


Như đã viết ở trên, không có đầu ra cho hàng [field.name].

Dưới đây là kết quả tôi thấy nếu tôi thay đổi hàng [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 

Theo Twig site: Bạn có thể sử dụng dấu chấm để truy cập các thuộc tính của một biến ((.) các phương thức hoặc thuộc tính của một đối tượng PHP hoặc các mục của một mảng PHP), hoặc cú pháp "subscript" ([]):

Bất kỳ ý tưởng nào về việc này sẽ hoạt động?

Trả lời

4

Nếu bạn đang sử dụng phiên bản 1.2 hoặc mới hơn, hãy thử các attribute chức năng

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

Nó thậm chí còn được đề cập trên page you linked to ...

Nếu bạn muốn có được một thuộc tính năng động trên thay vào đó, hãy sử dụng hàm thuộc tính.

+0

Điều đó khắc phục - cảm ơn! – sonicradish

Các vấn đề liên quan