Mr.*_* B. 0 php string yaml symfony twig
我尝试了这个问题的答案,但它不起作用。这很奇怪,我无法重现这种行为:
obj2arr将对象转换为数组,使其可迭代。prepareForTwig只是使用trim()等 - 字符串输出正确。{% set transVar = (key|prepareForTwig) %}没有前缀)也不起作用。yml:
# Resources/translations/messages.en.yml
my:
keywords:
keyword1: K1
keyword2: K2
# ...
Run Code Online (Sandbox Code Playgroud)
枝条:
{# my.twig.html #}
{% for key, value in data|obj2arr %}
{% set transVar = 'my.keywords.' ~ (key|prepareForTwig)) %}
{{ transVar }}<br/> {# output, e.g.: my.keywords.keyword1 #}
{{ transVar|trans}}<br/> {# output, e.g.: my.keywords.keyword1 #}
{{ 'my.keywords.keyword1'|trans }} {# output: K1 #}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
编辑:
自定义TwigExtension.php
class CustomTwigExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('obj2arr', array($this, 'obj2arrFilter')),
new \Twig_SimpleFilter('prepareForTwig', array($this, 'prepareForTwigFilter')),
);
}
public function obj2arrFilter($obj)
{
return (array)$obj;
}
public function prepareForTwigFilter($str) {
$str = trim($str);
$str = strtolower($str);
$str = substr($str, 2, strlen($str)); // obj2arr() prefixes "*"
return $str;
}
public function getName()
{
return 'custom_twig_extension';
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
其他示例似乎不适用于我的情况,这就是我最终使用的:
{{ "my.prefix.#{ myVariable }.my.postfix" | trans }}
Run Code Online (Sandbox Code Playgroud)
翻译字符串必须位于双引号之间。
| 归档时间: |
|
| 查看次数: |
3900 次 |
| 最近记录: |