我第一次使用Slim Framework,还使用twig进行模板化。我有一个 land.twig 文件,该文件的内容是
<form action="index.html" method="get">
<div class="form-group">
<input type="text" class="form-control" placeholder="Full Name">
</div>
</form>
我还有字符串文件来支持多语言,我调用字符串进行翻译的方式是 lang(“some_string”); 。 land.twig 文件由控制器呈现。我的问题是如何在该twig文件中的html元素的占位符属性中添加lang(“some_string”)?
答案 0 :(得分:4)
您可以使用Twig_SimpleFilter。
require_once '/path/to/lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem('/path/to/templates');
// an anonymous function
$filter = new Twig_SimpleFilter('lang', function ($string) {
//do stuff
return $string;
});
$twig = new Twig_Environment($loader);
$twig->addFilter($filter);
然后在您的模板中,您可以使用
<input type="text" class="form-control" placeholder="{{ 'Full Name'|lang }}">
由于您正在使用slim和它的twig集成,您必须在树枝组件中添加过滤器。
// Register component on container
$container['view'] = function ($container) {
$view = new \Slim\Views\Twig('path/to/templates', [
'cache' => 'path/to/cache'
]);
$view->addExtension(new \Slim\Views\TwigExtension(
$container['router'],
$container['request']->getUri()
));
$filter = new Twig_SimpleFilter('lang', function ($string) {
//do stuff
return $string;
});
$view->getEnvironment()->addFilter($filter);
return $view;
};
除了那个树枝有一个i18n extension。