如何在Twig模板中拆分字符?

时间:2012-07-11 03:05:52

标签: php twig fuelphp

当我想在Twig中使用分割功能时,我遇到了问题,我有像Male\tDoctor这样的单词,我希望使用\t ascii分割该单词,

我在搜索引擎中搜索,我正在讨论这个url我正在阅读的枝条分裂问题,我认为问题已修复,但当我在树枝网站搜索时文档,我无法通过split找到过滤器功能,您可以阅读this

当我尝试使用此代码时

{{ var | split('\t') }) 

返回The filter "split" does not exist

你对解决这个问题有什么想法或建议吗?

感谢您的回答...... :)

注意:
我正在使用fuelphp框架&树枝模板

3 个答案:

答案 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