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 中的嵌套参数值?

使用 Symfony2/Twig 创建引导轮播

在带有 Symfony2 的 Twig 中使用 % stylesheets % 标签时通过 Twig 运行 CSS 文件

Symfony2 Assetic + Twig 模板 JavaScript 继承