3

Twigで分割関数を使用したいときに問題が発生しました。このような単語があります。ASCIIMale\tDoctorを使用してその単語を分割したいのですが\t

私は検索エンジンで検索していて、このURLで小枝の分割の問題について話し合っています。それを読んで問題は修正されたと思いますが、小枝のWebサイトのドキュメントで検索すると見つかりません。あなたによるフィルター機能はこれsplitを読むことができます。

そして私がこのコードを使おうとすると

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

リターンはThe filter "split" does not exist

この問題を解決するためのアイデアや提案はありますか?

ご回答有難うございます...:)

注:
私はfuelphpフレームワークと小枝テンプレートを使用しています

4

3 に答える 3

10

完全を期すために:
F21で言及されているPRは現在(2012年10月19日以降)マージされ、twigは分割をサポートしています:http: //twig.sensiolabs.org/doc/filters/split.html

{{ "one,two,three"|split(',') }}
{# returns ['one', 'two', 'three'] #}
于 2012-10-23T15:59:40.617 に答える
1

分割機能はTwigマスターにはまだ存在していません。リンクしたプルリクエストはまだ存在openしており、Twigのリポジトリにマージされていません。

ただし、独自の拡張機能に分割フィルターを実装するだけで済みます。次に、Twigのコア拡張機能にこのフィルターが含まれている場合は、作成した拡張機能を削除するだけです。

独自の拡張機能で独自のフィルターを作成するのは簡単です: http: //twig.sensiolabs.org/doc/advanced.html#filters

于 2012-07-11T03:34:14.813 に答える
1

このファイルに、fuelphpフレームワークの小枝にカスタムフィルターを設定するためのこの関数を追加します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
于 2012-07-11T09:27:48.513 に答える