Symfony2中的Twig CamelCase过滤器

时间:2012-09-28 14:17:32

标签: symfony twig

所以我对Symfony2很新,我试图在树枝模板中使用camelize过滤器。但是,当我请求页面时,我收到错误消息,指出过滤器不存在:

  

过滤器“camelize”在:: base.html.twig

中不存在

以下是我的模板文件中的行:

  

{{'hello world'| camelize}}

过滤器列在Twig的quick reference page上。

我很困惑,Symfony2不支持所有twig的过滤器吗?似乎有不少遗失,为什么?如果它不支持它们,那么有什么方法可以添加缺少的那些吗?

提前致谢!

编辑好的,所以事实证明我迟钝了,我需要记得检查我是否真的得到了正确的git项目。难怪我很困惑。谢谢回复!

4 个答案:

答案 0 :(得分:10)

Symfony 2具有使用驼峰的标题过滤器

{{ entity.yourstring | title }}

以骆驼为例你的字符串

答案 1 :(得分:8)

您的链接指向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';
    }
}

请注意,这是一个快速而脏的过滤器!看看内置的过滤器,了解最佳实践!

答案 2 :(得分:3)

您正在寻找的过滤器名为" title":http://twig.sensiolabs.org/doc/filters/title.html

答案 3 :(得分:0)

默认情况下,这是Craft CMS 3中的最佳解决方案

第3步现在具有用于树枝的|camel过滤器

https://docs.craftcms.com/v3/dev/filters.html#camel

{{ 'foo bar'|camel }}
{# Output: fooBar #}
相关问题