php - Twig - 如何在模板内原生显示 RedBean 关系?

标签 php symfony twig redbean

我正在尝试让 symfony 的 TwigRedBean 很好地配合。

我可以显示顶级 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/

相关文章:

php - 帮助将 C++ 移植到 PHP 代码

php - 交响乐 3.3.10 : Object not found and 404 Not Found-Routing Issue

php - Twig:工作国际化 (i18n) 示例

Symfony:使 CSRF token 可用于所有 Twig 模板

mysql - 在 symfony2 Twig 模板中找不到实体

php - 在 PHP 中,对于代码 "$a=' a';$b=$a;"分配 2 个单位的内存还是 1 个单位?

php - 检查用户是否激活他/她的帐户的最有效方法?

php - 有趣的 SQL 结构 : part of primary key could be NULL

symfony - Assetic 不转储某些文件

forms - Symfony - 表单类型集合 - 如何通过 ID PUT 实体