1

我在通用模板中调用它来渲染 google plus 登录按钮,并且此错误不仅出现在主页http://mydomain.local/上,而且当我转到http://mydomain.local/somepage 之类的任何其他页面时出现此错误。

有什么想法可以是什么?

{{ render(controller('MyNamespaceMyBundle:MyController:loginButton')) }}

public function loginButtonAction()
    {
        return $this->render('MyNamespaceMyBundle:MyController:button.html.twig',array(
            'client_key' => $this->config['client_key']
        ));
    }

就是这样,你还需要什么代码?

4

2 回答 2

3

我有同样的问题。我试图从包含在嵌入控制器的页面中呈现sonata_page.ignore_route_patterns树枝模板

{% render(controller('AcmeDemoBundle:Controller:action', {param1 : 'value1'})) %}

并得到了同样的例外,Call to a member function getRelativePath() on a non-object.

Sonata\PageBundle\Twig\Extension\PageExtension的控制器函数正在检查它是否定义了一个pathInfo属性,如果没有,则从站点选择器的相对路径中检索它。由于我的路线被排除在外sonata_page,因此不能。因此例外。

所以基本上,我只是通过了所需的属性并解决了问题:

    {% set pathInfo = path(app.request.attributes.get('_route'), 
        app.request.attributes.get('_route_params')) %}
    {% render(controller('AcmeDemoBundle:Controller:action', 
        {param1 : 'value1', pathInfo: pathInfo})) %}
于 2015-02-16T15:40:28.463 回答
0

评论中显示您正在尝试使用 Sonata 的 Page Bundle。我发现其他人也遇到过这个问题。根据讨论线程,您有:

  1. 未配置站点
  2. 用“坏主机”配置站点

确保您遵循入门文档中列出的步骤。具体来说,您可能需要执行以下命令:

php app/console sonata:page:create-site
于 2015-02-05T15:09:07.713 回答