3

まず、ロジックはビューではなくコントローラーにある必要があることを知っており、そのように保持しています。

しかし、この特定の状況では、三項演算内でpreg_matchを使用して、divのcssクラスを設定する必要があります。

例:

{% for list in lists %}
    <div class="{{ (preg_match(list.a, b))>0 ? something : else }}"...>...</div>
{% endfor %}

小枝で(preg_match(list.a、b))> 0条件を達成するにはどうすればよいですか?

前もって感謝します

4

3 に答える 3

6

グーグルの検索結果からここに来た人たち(私のように)。

次のようなことを可能にする包含演算子があります。

{{ 'cd' in 'abcde' }} {# returns true #}

于 2017-02-28T13:43:56.453 に答える
5

直接使用することはできませんpreg_match()が、それを実現する方法はいくつかあります。

  1. エンティティの場合listは、メソッドを追加しますmatches(){{ (list.matches(b)) ? something : else }}

  2. preg_match()内部でhttp://symfony.com/doc/master/cookbook/templating/twig_extension.htmlを使用するカスタムTwig拡張関数を作成できます。

于 2013-02-22T18:52:49.943 に答える
0

セルジュのコメントから拡張して、正解です。

私の例では、私の文字列は「MessageTaken-12456756」です。次に、| splitを使用して配列に変換し、|replaceを使用して空白を利用できます。

{% set mt = 'Message Taken' in d.note %}
{% if mt == true %}
   {#.. you can then do something that is true#}
   {% set mt_array = d.note|split('-') %}
   {{ mt_array[0] }} | {{ mt_array[1]|replace({' ' : ''}) }}
{% endif %}

これで文字列が出力されますが、1ではなく2つの部分を制御するようになりました。

于 2021-04-11T10:17:01.577 に答える