Php 在Symfony 3的基础布局中使用细枝延伸
我有一个控制器,用于设置数据库中存储的一些东西。控制器大致如下所示:Php 在Symfony 3的基础布局中使用细枝延伸,php,twig,symfony,Php,Twig,Symfony,我有一个控制器,用于设置数据库中存储的一些东西。控制器大致如下所示: class SetupController extends Controller { protected $foreground = '#fff'; protected $background = '#333'; protected $logo = 'default.png'; protected $show_logo = true; public function HomePa
class SetupController extends Controller
{
protected $foreground = '#fff';
protected $background = '#333';
protected $logo = 'default.png';
protected $show_logo = true;
public function HomePageAction()
{
...
$options = [
...
'logo' => $this->logo,
'foreground' => $this->foreground,
'background' => $this->background
];
return $this->render('CommonBundle:Layout:topbar_info.html.twig', ['options' => $options]);
}
}
我如何在/app/Resources/views/base.html.twig
(这是我的布局)中使用该函数,如下所示:
<head>
...
{% block stylesheets %}
...
<style type="text/css" media="all">
.background, .dynamic_color {
background-color: {{ options.background }};
}
</style>
{% endblock %}
</head>
<body>
<div id="logo_id_area_container" class="topbar">
{{ render(controller('CommonBundle:Setup:HomePage')) }}
</div>
</body>
{{ render_logo() }}
我从base.html.twig
(主布局或基本模板)调用它,如下所示:
<head>
...
{% block stylesheets %}
...
<style type="text/css" media="all">
.background, .dynamic_color {
background-color: {{ options.background }};
}
</style>
{% endblock %}
</head>
<body>
<div id="logo_id_area_container" class="topbar">
{{ render(controller('CommonBundle:Setup:HomePage')) }}
</div>
</body>
{{ render_logo() }}
但我最终犯了以下错误:
临界-调用未定义的函数renderLogo()临界-
未捕获的PHP异常
Symfony\Component\Debug\Exception\UndefinedFunctionException:
试图从全局命名空间调用函数“renderLogo”
我已在服务中注册了以下扩展名。yml
:
setup.twig_extension:
class: CommonBundle\Twig\SetupExtension
arguments: ['@doctrine','@session', '@zend_bridge']
tags:
- { name: twig.extension }
我还缺少什么?我在Twig扩展的
getFunctions()
方法中使用了Symfony 3.2.5,您告诉Twig可调用的是字符串renderLogo
。PHP将其解释为函数renderLogo()
。对于对象方法,需要传递一个数组,其中第一个元素是对象,第二个元素是方法名(请参阅):