我在渲染谷歌加登录按钮的常用模板中调用它,并且此错误不会仅出现在主页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']
));
}
就是这样,你还需要什么代码?
答案 0 :(得分:3)
我遇到了同样的问题。我试图从sonata_page.ignore_route_patterns
,embedding a controller中包含的网页呈现树枝模板:
{% 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})) %}
答案 1 :(得分:0)
评论中显示您正在尝试使用Sonata的Page Bundle。我发现others have experienced this issue。根据讨论主题,你有:
确保您按照Getting started文档中列出的步骤操作。具体来说,您可能需要执行此命令:
php app/console sonata:page:create-site