当我想在Twig中使用分割功能时,我遇到了问题,我有像Male\tDoctor
这样的单词,我希望使用\t
ascii分割该单词,
我在搜索引擎中搜索,我正在讨论这个url我正在阅读的枝条分裂问题,我认为问题已修复,但当我在树枝网站搜索时文档,我无法通过split
找到过滤器功能,您可以阅读this。
当我尝试使用此代码时
{{ var | split('\t') })
返回The filter "split" does not exist
你对解决这个问题有什么想法或建议吗?
感谢您的回答...... :)
注意:
我正在使用fuelphp框架&树枝模板
答案 0 :(得分:10)
仅为完整性:
F21提到的公关现在合并(自19.10.2012起),twig支持拆分:
http://twig.sensiolabs.org/doc/filters/split.html
{{ "one,two,three"|split(',') }}
{# returns ['one', 'two', 'three'] #}
答案 1 :(得分:1)
Twig master中尚不存在拆分功能。您链接的拉取请求仍为open
,尚未合并到Twig的存储库中。
但是,您可以在自己的扩展中简单地实现拆分过滤器。然后,一旦Twig在其核心扩展中使用此过滤器,只需删除您创建的扩展名。
在您自己的扩展程序中创建自己的过滤器非常简单:http://twig.sensiolabs.org/doc/advanced.html#filters
答案 2 :(得分:1)
将此文件中的设置自定义过滤器的功能添加到此文件fuel/packages/parser/classes/twig/fuel/extension.php
/**
* Returns a list of filters to add to the existing list.
*
* @return array An array of filters
*/
public function getFilters()
{
//custom by viyancs adding splite function because not found in twig documentation
return array(
'explode' => new Twig_Filter_Function('Class::explode_custom', array('pre_escape' => 'html', 'is_safe' => array('html'))),
);
}
并在另一个类中声明explode_custom
函数,在这种情况下,您可以使用相同的类或其他类。
/*
* adding custom function for split character
* used for fuel/app/classes/twig/fuel/extension.php
* @params
* $string : this is twig variable or value example {{ test }}
* $split : this is split character example {{ test\tdata | split('\t') }} \t is split character
* @return
* array of explode
*
*/
public function explode_custom($string,$split)
{
$data = explode($split, $string);
return $data;
}
并使用
{% set varStack = "stack[tab]overflow" | explode('\t') %}
{% for value in varStack %}
<li>{{ value }}</li>
{% endfor %}
结果是
stack
overflow