多次元配列からデータを取得する(配列をレンダリングする)

私は私のD7モジュールに次のようなフォームのレンダリング配列を持っています:

'form' => 
  array
    '#id' => string 'demo-form' (length=9)
    '#action' => string '/sprint07/' (length=10)
    'name' => 
      array
        '#title' => string 'Username' (length=8)
        '#maxlength' => int 13
        '#size' => int 15
        '#type' => string 'textfield' (length=9)
        '#required' => boolean true
        '#input' => boolean true
        '#autocomplete_path' => boolean false
   ... snip ...

私はテーマを作成するために twig-for-drupal を使用していますが、値を取得できないようです。 {{form ['name'] [' #{type}}}}} </form>} </form>} </form>そうですが、それらはすべて空白に戻ります。

Other fields such as form['#action'] works fine, so how should I access the information more than one array in? I can't change the module too much as the PHP template in its native state uses render(form);

- 更新 -

上記のように配列全体を表示するには {{form | dump( 'v')}} を使うことができるようですが、 {{私は、twigがレンダリング配列を自動的に検出していることを意味する文字列を取得し、それを "有益に"変換して、私のために変換します。私の質問です:どのように自動レンダリングを無効にするのですか?

2
nl ru de

2 答え

"name"サブ配列に "#id"キーが含まれていません。

仕事をしようとする

{{ form.name.#title }} 
1
追加された
idは悪い例でしたが、私も存在するキーには同じ問題があります。
追加された 著者 CaffeinatedDave,

TFDは現在、レンダリング配列と思われるものを自動レンダリングするように設定されています。これをオフにするには、autorenderをFALSEに設定する必要があります。 twig_get_instance()私はこれを自分で試してみましたが、それでも配列を文字列に変換しているようですので、TFD内のバグかもしれません。

ReneBのサンドボックスから:

自動レンダリング

     

このバージョンのTWIGエンジンは自動レンダリングを使用して、レンダリング配列(doom)からレンダリングしたいすべての単一フィールドに対してRSIに{{node.field_somefield | render}}をタイプさせないようにします。 {node.field_something}}

     

コンパイルされたテンプレートTFDのレンダリング時に、呼び出された変数が文字列、呼び出し可能または配列であるかどうかをチェックします。それが文字列の場合、単純にecho $ stringを呼び出します。それが呼び出し可能なら、それは適切なメソッド()を返します。配列の場合は、レンダリング可能な配列であるとみなし、render($ string)にマップします。 drupalの方法。

     

hide()で隠されたオブジェクトをこのように尊重します。

     これを今のところにするには、twig_get_instance()メソッドのtwig.engineでautorenderをFALSEに設定する必要があります。     

私は{%noautorender%} {%end noautorender%}ブロック構造に取り組んでいます。

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com