Tim*_*imo 162 configuration symfony twig
我有一个Symfony2 Twig模板.我想在此twig模板中输出config参数的值(版本号).因此我定义了config参数,如下所示:
parameters:
app.version: 0.1.0
Run Code Online (Sandbox Code Playgroud)
我可以在控制器中使用此配置参数,但我不知道如何在我的Twig模板中获取它.
Rya*_*all 396
您可以在配置的twig globals部分中使用参数替换:
参数配置:
parameters:
app.version: 0.1.0
Run Code Online (Sandbox Code Playgroud)
Twig配置:
twig:
globals:
version: '%app.version%'
Run Code Online (Sandbox Code Playgroud)
树枝模板:
{{ version }}
Run Code Online (Sandbox Code Playgroud)
此方法提供的好处是允许您在ContainerAware
类中使用参数,使用:
$container->getParameter('app.version');
Run Code Online (Sandbox Code Playgroud)
web*_*a2l 188
很容易,您可以在配置文件中定义:
twig:
globals:
version: "0.1.0"
Run Code Online (Sandbox Code Playgroud)
并使用.在模板中访问它
{{ version }}
Run Code Online (Sandbox Code Playgroud)
否则,它必须是具有Twig扩展名的方式来公开您的参数.
Fra*_*ula 88
您还可以利用内置的Service Parameters系统,该系统允许您隔离或重用该值:
# app/config/parameters.yml
parameters:
ga_tracking: UA-xxxxx-x
# app/config/config.yml
twig:
globals:
ga_tracking: "%ga_tracking%"
Run Code Online (Sandbox Code Playgroud)
现在,变量ga_tracking在所有Twig模板中都可用:
<p>The google tracking code is: {{ ga_tracking }}</p>
Run Code Online (Sandbox Code Playgroud)
该参数也可在控制器内使用:
$this->container->getParameter('ga_tracking');
Run Code Online (Sandbox Code Playgroud)
您还可以将服务定义为全局Twig变量(Symfony2.2 +):
# app/config/config.yml
twig:
# ...
globals:
user_management: "@acme_user.user_management"
Run Code Online (Sandbox Code Playgroud)
http://symfony.com/doc/current/templating/global_variables.html
如果要设置的全局变量更复杂 - 比如一个对象 - 那么您将无法使用上述方法.相反,您需要创建一个Twig Extension并将全局变量作为getGlobals方法中的一个条目返回.
Ala*_*blo 19
在较新版本的Symfony2上(使用parameters.yml
而不是parameters.ini
),您可以存储对象或数组而不是键值对,因此您可以通过以下方式管理全局变量:
config.yml(仅编辑一次):
# app/config/config.yml
twig:
globals:
project: %project%
Run Code Online (Sandbox Code Playgroud)
parameters.yml:
# app/config/parameters.yml
project:
name: myproject.com
version: 1.1.42
Run Code Online (Sandbox Code Playgroud)
然后在twig文件中,你可以使用{{ project.version }}
或{{ project.name }}
.
注:我个人不喜欢添加东西app
,只是因为这是Symfony的的变量,我不知道会不会有在未来存储.
Sud*_*nan 16
上面给出的ans是正确的,并且工作正常.我以不同的方式使用.
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: app.yml }
- { resource: app_twig.yml }
Run Code Online (Sandbox Code Playgroud)
app.yml
parameters:
app.version: 1.0.1
Run Code Online (Sandbox Code Playgroud)
app_twig.yml
twig:
globals:
version: %app.version%
Run Code Online (Sandbox Code Playgroud)
内控制器:
$application_version = $this->container->getParameter('app.version');
// Here using app.yml
Run Code Online (Sandbox Code Playgroud)
里面的模板/树枝文件:
Project version {{ version }}!
{# Here using app_twig.yml content. #}
{# Because in controller we used $application_version #}
Run Code Online (Sandbox Code Playgroud)
控制器:
public function indexAction() {
$application_version = $this->container->getParameter('app.version');
return array('app_version' => $application_version);
}
Run Code Online (Sandbox Code Playgroud)
模板/树枝文件:
Project version {{ app_version }}
Run Code Online (Sandbox Code Playgroud)
我提到了不同的更好理解.
Tho*_*aux 12
使用Twig扩展,您可以创建parameter
Twig功能:
{{ parameter('jira_host') }}
Run Code Online (Sandbox Code Playgroud)
TwigExtension.php:
class TwigExtension extends \Twig_Extension
{
public $container;
public function getFunctions()
{
return [
new \Twig_SimpleFunction('parameter', function($name)
{
return $this->container->getParameter($name);
})
];
}
/**
* Returns the name of the extension.
*
* @return string The extension name
*/
public function getName()
{
return 'iz';
}
}
Run Code Online (Sandbox Code Playgroud)
service.yml:
iz.twig.extension:
class: IzBundle\Services\TwigExtension
properties:
container: "@service_container"
tags:
- { name: twig.extension }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
150605 次 |
最近记录: |