我在渲染谷歌加签名按钮的公共模板中调用了它,这个错误不仅出现在主页上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']
));
}
就是这样,你还需要什么代码?
我也遇到了同样的问题。我试图从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})) %}
评论中透露,您正在尝试使用Sonata的页面捆绑包。我发现其他人也经历过这个问题。根据你的讨论线索:
- 未配置站点
- 为站点配置了"坏主机"
请确保按照入门文档中列出的步骤进行操作。具体来说,您可能需要执行以下命令:
php app/console sonata:page:create-site