在Twig中是否有办法添加一个空格,其中单词有驼峰大小写字母。
例如:helloWorldHowAreYouDoing将你好世界你在做什么
谢谢!
答案 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