public indexFunction(){
$var = 'Apple';
//set $var global
}
这样$var
就可以在基本模板中访问。
public indexFunction(){
$var = 'Apple';
//set $var global
}
这样$var
就可以在基本模板中访问。
如果您希望它作为静态值,只需将其放入配置文件中:
# app/config/config.yml
twig:
globals:
var: 'Apple'
如果您希望它作为动态变量,您可以为树枝提供服务 ID:
twig:
globals:
# the value is the service's id
var: '@AppBundle\Service\yourData'
您必须将变量传递给模板:
// 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') }}
动态的:
在包路径(例如:src/AppBundle)中添加一个名为“ YourNameTwigExtension.php ”的文件。该文件将是一个扩展“ \Twig_Extension ”类并实现接口“ \Twig_Extension_GlobalsInterface ”的类( YourNameTwigExtension ) 。在“ YourNameTwigExtension ”类中实现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:如何将变量注入所有模板(即全局变量)
对不起我的英语..干得好!