93

PHPでは、関数を使用して、キーが配列に存在するかどうかを確認できますarray_key_exists()

ifTwigテンプレート言語では、次のようなステートメントを使用するだけで、変数またはオブジェクトのプロパティが存在するかどうかを確認できます。

{% if app.user %}
do something here
{% else %}
do something else
{% endif %}

しかし、 Twigを使用して配列のキーが存在するかどうかをどのように確認しますか?試し{% if array.key %}ましたが、エラーが発生します。

Key "key" for array with keys "0, 1, 2, 3...648" does not exist

テンプレートにデータを渡す主な方法の1つは配列を使用することであるため、これを行うには何らかの方法があるはずです。何かご意見は?

4

3 に答える 3

214

小枝の例:

{% if array.key is defined %}
  // do something
{% else %}
  // do something else
{% endif %}
于 2012-11-28T14:29:20.090 に答える
33

keys小枝機能が使えます

{% if myVar in someOtherArray|keys %}

于 2017-01-23T21:23:06.670 に答える
3

クイックアンサー(TL; DR)

  • DeveloperTLindelは、Twigに配列キーが存在するかどうかをテストしたいと考えています。
  • DeveloperTLindelは、未定義のキーに関連するエラーをトラップしたいと考えています。
  • これは、defaultフィルターを使用して処理できます。

詳細な回答

コンテクスト

  • Twig 2.x(2017年3月8日水曜日現在の最新バージョン)
  • defaultフィルタの汎用使用。

問題

  • シナリオ:
  • DeveloperTLindelは、Twigに配列キーが存在するかどうかをテストしたいと考えています。
  • DeveloperTLindelは、潜在的に未定義のキーによって引き起こされるエラーや例外を回避したいと考えています。

解決

  • DeveloperTLindelはdefaultフィルターを使用できます。
  • フィルタはdefault、未定義の変数による例外をキャッチし、代替値の短絡置換を許可します。
  • defaultフィルターはチェーン可能です。

Example01

{#-****************************************
  連想配列の単一キーのテスト
  -#}
  {%-set mystring = myarray ['key-no-existo'] | default('__ BLANK__')-%}

{#-****************************************
  連想配列の複数のキーのテスト
  -#}
  {%-set mystring = myarray ['alpha']
        | default(myarray ['bravo'])
        | default(myarray ['charlie'])
        | default('__ BLANK__')
        -%}

も参照してください

于 2017-03-08T18:12:40.047 に答える