Symfony2 中的 Twig CamelCase 过滤器
Posted
技术标签:
【中文标题】Symfony2 中的 Twig CamelCase 过滤器【英文标题】:Twig CamelCase Filter in Symfony2 【发布时间】:2012-09-28 14:17:32 【问题描述】:所以我对 Symfony2 还是很陌生,我正在尝试在树枝模板中使用 camelize
过滤器。但是,当我请求该页面时,我收到一条错误消息,指出过滤器不存在:
::base.html.twig 中不存在过滤器“camelize”
这是我的模板文件中的一行:
'你好世界' |骆驼化
过滤器在 Twig 的quick reference page 上列出。
我很困惑,Symfony2 不支持所有 twig 的过滤器吗?好像少了很多,为什么呢?如果它不支持它们,那么有什么办法可以添加缺少的吗?
提前致谢!
edit 好吧,事实证明我是智障,我需要记住检查我是否真的得到了正确的 git 项目。难怪我一头雾水。谢谢回复!
【问题讨论】:
我不知道你从哪里得到那个参考页,但这似乎不是正确的 Twig。 【参考方案1】:Symfony 2 有用于驼峰式的标题过滤器
entity.yourstring | title
驼峰式你的字符串
【讨论】:
【参考方案2】:您的链接指向 GitHub 上的 fork,表示原始项目的修改副本。原项目是https://github.com/fabpot/Twig。
Twig 中没有 camelize
过滤器。内置过滤器是here。您可以按照本教程编写自己的camilize过滤器(实际上很简单......):How to write a custom Twig Extension。
编辑:只是为了好玩,您可以编写如下内容:
class MyTwigExtension extends Twig_Extension
public function getFilters()
return array(
'camelize' => new Twig_Filter_Method($this, 'camelizeFilter'),
);
public function camelizeFilter($value)
if(!is_string($value))
return $value;
$chunks = explode(' ', $value);
$ucfirsted = array_map(function($s) return ucfirst($s); , $chunks);
return implode('', $ucfirsted);
public function getName()
return 'my_twig_extension';
请注意,这是一个快速而肮脏的过滤器!查看内置过滤器以了解最佳做法!
【讨论】:
Doctrine 的Inflector
类有 camelize
方法,你可以使用它而不是自己编写,但是它和你写的一样。
您可以在array_map
中直接使用ucfirst
,因为它具有相同的签名。 array_map('ucfirst', $chunks);
【参考方案3】:
您要查找的过滤器名为“title”:http://twig.sensiolabs.org/doc/filters/title.html
【讨论】:
【参考方案4】:这是 Craft CMS 3 中默认的最佳解决方案
Craft 3 现在有一个|camel
用于树枝的过滤器
https://docs.craftcms.com/v3/dev/filters.html#camel
'foo bar'|camel
# Output: fooBar #
【讨论】:
以上是关于Symfony2 中的 Twig CamelCase 过滤器的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 和 Twig 在 vagrant box 中的表现
从 Symfony2/Twig 中的 2 位国家代码获取翻译的国家名称?
在带有 Symfony2 的 Twig 中使用 % stylesheets % 标签时通过 Twig 运行 CSS 文件