我正在尝试让 symfony 的 Twig 与 RedBean 很好地配合。
我可以显示顶级 bean 的数据,但不能显示其任何关系。
这就是我的意思:
在我的 Controller 中,我以标准方式调用 Twig(有点伪代码):
// Controller
$vars = array(
'people' = R::find('person')
);
return $this->app['twig']->render('index.twig',$vars);
我的 Bean 结构如下:
PERSON
->id
->first_name
->last_name
->company <-- (this represents a 'company' bean)
COMPANY
->id
->name
在index.twig中,我可以轻松地输出这个人的名字,如下所示...
{% for person in people %}
{{person.first_name}}
{% endfor %}
...但我希望能够访问的是关联的公司 bean,就像这样...
{% for person in people %}
**{{person.company.name}}**
{% endfor %}
如何从 Twig 模板内部执行此操作,而不需要额外的 Controller /模型逻辑?
最佳答案
这显示了基本问题:
protected function testQuery()
{
$persons = \R::find('personx');
foreach($persons as $person)
{
//$person->company;
if ($person instanceof \ArrayAccess && isset($person['company']))
{
echo 'Got Array' . "\n";
}
echo get_class($person) . ' ' . $person->name . ' ' . $person->company->name . "\n";
}
}
发生的情况是,当您执行 $person->company 时,公司会延迟加载。 Twig 在尝试加载之前会检查公司属性是否存在,但没有找到它。如果您取消注释 $person->company 行,那么测试就会通过,一切都会好起来。
我在 RedBeans 中没有看到任何允许急切加载的内容。您可以让您的 Controller 运行,然后对每个人调用 $person->company 。或者你可以尝试搞乱 Twig_Template::getAttribute();或者甚至可以使用查询并使用数组。
关于php - Twig - 如何在模板内原生显示 RedBean 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9585651/