2016-12-15 5 views
0

У меня есть bean (foo), связанный с другим bean (bar) и хочу получить доступ к полям другого bean's (bar) в Twig. Во-первых, пример того, как я устанавливаю вверх бобыКак получить доступ к связанным полям бобов с помощью RedBean и Twig?

$f = R::dispense('foo'); 
$f->name = 'foo'; 

$b = R::dipsense('bar'); 
$b->val = 10; 
R::store($b); 

$f->bar = $b; 
R::store($f); 

Я знаю, что нет никаких проблем, потому что все здесь база данных корректно обновляется. Теперь, используя прут:

<table> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Value</th> 
     </tr> 
    </thead> 
    <tbody> 
     {% for f in siteinfo.foos %} 
      <tr> 
       <td>{{f.name}}</td> 
       <td>{{f.bar.val}}</td> 
      </tr> 
     {% endfor %} 
    </tbody> 
</table> 

Я уверен, почти все работает, потому что я получаю таблицу с именами, напечатанных правильно, однако никаких значений «бара» не печатаются. siteinfo.foos возвращение R::findAll('foo', 'order by name');.

Любая помощь была бы принята с благодарностью!

+0

Redbean работает с ленивой загрузкой, прежде всего, вам нужно знать, является ли этот var в twig bean или stdClass или массивом, вы можете проверить эту печать bean {{bean | var_dump}} –

+0

Сбой, потому что ' var_dump' - неизвестный фильтр. – ShiftyCodes

+0

Похоже, что загрузка выполняется как массив. Печать '

f

' в цикле for дает: {"id": "14", "name": "foo", "bar_id": "1"} – ShiftyCodes

ответ

0

Обход:

<table> 
<thead><tr><th>Name</th><th>Value</th></tr></thead> 
<tbody> 
    {% for f in siteinfo.foos %} 
     <tr> 
      <td>{{f.name}}</td> 
      <td>{{f.__get('bar').val}}</td> 
     </tr> 
    {% endfor %} 
</tbody> 
</table> 

Использование __get() сил оценки имущества в RedBean библиотеке.