我正在开发一个第三方包。
我需要定义一个变量,以便在twig模板中使用该变量。
当尝试在我的bundle config.yml中声明变量步骤时,它可以在我的项目中的twig模板中使用。
twig:
globals:
test_vars: %test_vars%
我遇到了这个错误。
InvalidArgumentException in YamlFileLoader.php line 357:
There is no extension able to load the configuration for "twig" (in /home/domain.ext/vendor/test/test-bundle/test/TestBundle/DependencyInjection/../Resources/config/.yml). Looked for namespace "twig", found none
非常感谢。
解决方案代码,感谢 @alexander.polomodov 和 @mblaettermann
GlobalsExtension.php
namespace Vendor\MyBundle\Twig\Extension;
class GlobalsExtension extends \Twig_Extension {
public function __construct($parameter) {
$this->parameter= $parameter;
//...
}
public function getGlobals() {
return array(
'parameter' => $this->parameter
//...
);
}
public function getName() {
return 'MyBundle:GlobalsExtension';
}
}
my.yml
services:
twig.extension.globals_extension:
class: Vendor\MyBundle\Twig\Extension\GlobalsExtension
arguments: [%my.var%]
tags:
- { name: twig.extension }
my.html.twig
my parameter: {{ parameter }}