public indexFunction(){
$var = 'Apple';
//set $var global
}
这样就可以在基本模板中访问$var
。
答案 0 :(得分:1)
您必须将变量传递给模板:
// AppBundle/Controller/DefaultController.php
public indexFunction()
{
$var = 'Apple';
return $this->render('index.html.twig', array(
'var' => $var,
));
}
如果你真的想让一个全局变量可用于你的所有模板,你应该在你的twig配置中设置它:
# app/config/config.yml
twig:
globals:
var: 'value'
之后,您可以使用{{ var }}
编辑:
最后使用会话的示例 - 将变量保存到会话中
// AppBundle/Controller/DefaultController.php
public indexFunction()
{
$var = 'Apple';
$session = $this->get('session');
$session->set('var', $var);
...
}
之后,你可以在像这样的树枝模板中检索它
{# /app/Resources/views/base.html.twig #}
{{ app.session.get('var') }}
答案 1 :(得分:1)
如果你想把它作为静态值,只需把它放在配置文件中:
# app/config/config.yml
twig:
globals:
var: 'Apple'
如果你想将它作为动态变量,你可以给树枝提供服务ID:
twig:
globals:
# the value is the service's id
var: '@AppBundle\Service\yourData'
答案 2 :(得分:1)
<强>动态:强>
在捆绑路径中(例如: src / AppBundle ),添加一个名为&#34; YourNameTwigExtension.php &#34;的文件。此文件将是一个类( YourNameTwigExtension ),它扩展了&#34; \ Twig_Extension &#34;类和实现接口&#34; \ Twig_Extension_GlobalsInterface &#34;。在&#34; YourNameTwigExtension &#34;内class实现 getGlobals ()方法。例如:
//....
class YourNameTwigExtension extends \Twig_Extension implements \Twig_Extension_GlobalsInterface {
//...
public function getGlobals() {
$data = array();
$data['user'] = $this->session->get('user');
$data['menu'] = $this->session->get('menu');
$data['actions'] = $this->session->get('actions');
$data['view'] = $this->session->get('view');
return $data;
}
}
在TWIG中,您将使用:{{user}},{{menu}},{{actions}}等...
警告:添加 app / config / services.yml :
twig.extension.yourname_twig_extension:
class: YourBundle\YourNameTwigExtension
tags:
- { name: twig.extension }
<强>静态:强>
如果您需要使用静态变量,请在 app / config / parameters.yml 中填写:
twig:
globals:
portal_name: 'Portal'
portal_img_logo: logo.png
portal_favicon: favicon.ico
logowidth: 350px
Symfony Doc:How to Inject Variables into all Templates (i.e. global Variables)
对不起我的英文.. 好工作!