我有档案parameters.yml:
parameters:
............
image_news_url: http://image.dev/news/
Run Code Online (Sandbox Code Playgroud)
现在在我的包中我创建了一个新的枝条扩展:
// src/DesktopBundle/Twig/AppExtension.php
namespace App\DesktopBundle\Twig;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class AppExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('get_image', array($this, 'getImage')),
);
}
public function getImage($domen, $image_id)
{
$o_container = new ContainerBuilder();
switch($domen){
case 'news':
return sprintf('%s%s',$o_container->getParameter('image_news_url'),$image_id.'.slide.jpg');
break;
}
}
public function getName()
{
return 'app_extension';
}
Run Code Online (Sandbox Code Playgroud)
我有一个错误:You have requested a non-existent parameter "image_news_url.你能帮我吗 ?我不明白为什么我没有访问parameters.yml.Thx提前和抱歉我的英语
问题是由您尝试自己构建容器引起的.
$o_container = new ContainerBuilder();
Run Code Online (Sandbox Code Playgroud)
这是错的.
如果要访问容器,只需将容器注入扩展中即可.
配置
services:
# [..]
your.twig_extension:
class: Your\Namespace\YourExtension
public: false
arguments: [ "@service_container" ]
tags:
- { name: twig.extension }
Run Code Online (Sandbox Code Playgroud)
类
use Symfony\Component\DependencyInjection\ContainerInterface;
namespace Your\Namespace;
class YourExtension
{
/** @var ContainerInterface */
protected $container;
/** @param ContainerInterface $container */
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
/** @return string */
function getImage()
{
// some logic here
return $this->container->getParameter('image_news_url');
}
Run Code Online (Sandbox Code Playgroud)
我假设你想应用一些额外的逻辑来选择你的扩展中的参数.否则你可以简单地:
%image_news_url% twig.globalsconfig指令文档章节使用服务容器参数中有一个示例.
应用程序/配置/ parameters.yml
image_news_url: "http://some-url.tld"
Run Code Online (Sandbox Code Playgroud)
应用程序/配置/ config.yml
twig:
globals:
image_news_url: %image_news_url%
Run Code Online (Sandbox Code Playgroud)
模板
{{ image_news_url }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2811 次 |
| 最近记录: |