Twig 在驼峰式字母中添加空格

Lar*_*una 2 symfony twig

有没有办法在 Twig 中添加一个空格,其中单词有驼峰字母。

例如:helloWorldHowAreYouDoing 将是hello World How Are You Doing

谢谢!

Ric*_*d H 5

从 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';
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您将驼峰式大小写字符串传递给函数 convertCamelCaseToHaveSpacesFilter 将完成这项工作。

在 Twig 页面中:

<body>
    {% set yourString = 'helloWorldHowAreYouDoing' %}
    {{ yourString|camelToSpace }}
</body>
Run Code Online (Sandbox Code Playgroud)

这也适用于 Pascal 套管,但之后可能需要修剪字符串。

如果未启用自动装配,请记住注册您的扩展类。在 services.yml 中:

services:
    app.twig_extension:
        class: RouteToExtensionClass\yourExtension
        public: false
        tags:
            - { name: twig.extension }
Run Code Online (Sandbox Code Playgroud)