我正在努力让模板AB测试启动并运行,我需要访问树枝加载器中的容器,这样如果用户参与我们的AB测试,我就可以换出模板。到目前为止,我一直在尝试:
twig.loader.filesystem:
class: %twig.loader.filesystem.class%
arguments: [%templating.locator%, %templating.name_parser%, @service_container]
和
project.components.loader.project_twig_loader:
class: %twig.loader.filesystem.class%
arguments: [Project\Components\Extensions\TemplatingProjectTemplateLocator, Project\Components\Extensions\Templating\ProjectTemplateNameParser, @service_container]
tags:
- { name: twig.loader }
但他们只是错误抛出错误。
但是,如果我移除容器并进行下面的设置,则可以正常工作。
在我的parameters.yml中:
parameters:
twig.loader.filesystem.class: Project\Components\Extensions\TwigFilesystemLoader\ProjectFilesystemLoader
在我的档案中:
class ProjectFilesystemLoader extends \Twig_Loader_Filesystem
{
/**
* @var \Symfony\Component\Config\FileLocatorInterface
*/
protected $locator;
/**
* @var \Symfony\Component\Templating\TemplateNameParserInterface
*/
protected $parser;
/**
* @var \Symfony\Component\DependencyInjection\ContainerInterface
*/
protected $container;
public function __construct(FileLocatorInterface $locator, TemplateNameParserInterface $parser, ContainerInterface $container)
{
parent::__construct(array());
$this->locator = $locator;
$this->parser = $parser;
$this->container = $container;
$this->cache = array();
}
protected function findTemplate($template)
{
...
}
}
所以我输了,我怎么把容器放进树枝装载机?