Twig在驼峰案例中增加了空间

时间:2014-06-25 17:57:56

标签: symfony twig

在Twig中是否有办法添加一个空格,其中单词有驼峰大小写字母。

  

例如:helloWorldHowAreYouDoing将你好世界你在做什么

谢谢!

3 个答案:

答案 0 :(得分:1)

您应该创建Twig Extension并创建一个功能来执行此操作。

像这样的东西会这样做..

/**
 * Convert under_score to title Case
 *
 * @param $underscore
 * @return string
 */
public static function convertUnderscoreToTitleCase($underscore)
{
    return preg_replace('/(?:^|_)(.?)/e', "strtoupper(' $1')", $underscore);
}

答案 1 :(得分:1)

从PHP版本5.5起,preg_replace_callback函数是必需的,因为“/ e”修饰符现已弃用。

创建一个扩展方法,并从树枝页面调用它作为过滤器。

扩展类:

<?php

// src/AppBundle/Twig/AppExtension.php
namespace AppBundle\Twig;

class yourExtension extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('camelToSpace', array($this, 'convertCamelCaseToHaveSpacesFilter')),
        );
    }

    /*
     * Converts camel case string to have spaces
     */
    public function convertCamelCaseToHaveSpacesFilter($camelCaseString)
    {

        $pattern = '/(([A-Z]{1}))/';
        return preg_replace_callback(
            $pattern,
            function ($matches) {return " " .$matches[0];},
            $camelCaseString
        );
    }

    public function getName()
    {
        return 'app_extension';
    }
}

如果你传给一个camel case字符串,convertCamelCaseToHaveSpacesFilter函数将会起作用。

另请记住将您的扩展程序注册为服务。在services.yml:

services:
    app.twig_extension:
        class: RouteToExtensionClass\yourExtension
        public: false
        tags:
            - { name: twig.extension }

在Twig页面中:

<body>
    {% set yourString = 'helloWorldHowAreYouDoing' %}
    {{ yourString|camelToSpace }}
</body>

这也应该适用于Pascal套管,但之后可能需要对绳子进行修整。

答案 2 :(得分:0)

它不是开箱即用的。您可以创建枝条扩展来执行此操作: http://symfony.com/doc/current/cookbook/templating/twig_extension.html