2

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.name.#type }}{{ form.name['#type'] }}

などの他のフィールドform['#action']は正常に機能しますが、複数の配列の情報にアクセスするにはどうすればよいですか?ネイティブ状態のphpテンプレートが使用するので、モジュールをあまり変更できませんrender(form);

- アップデート -

これにさらにデバッグを追加し、{{ form|dump('v') }}上記のように配列全体を表示するために使用できるようです{{ form.name|dump('v') }}が、文字列を取得するだけです。これは、twigがレンダリング配列を自動的に検出していることを意味します。私のためにそれを変換します..それで私の質問になると思います:自動レンダリングをオフにするにはどうすればよいですか?

4

2 に答える 2

1

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

仕事ならやってみて

{{ form.name.#title }} 
于 2012-12-28T09:50:39.953 に答える
0

現在、ケースバイケースでこれを行うことはできません。TFDは現在、レンダリング配列と見なされるものをすべて自動レンダリングするように設定されています。これをオフにするには、自動レンダリングをFALSEに設定する必要があります。twig_get_instance()。私はこれを自分で試しましたが、それでも配列が文字列に変換されているようです。これはTFD内のバグである可能性があります。または、使用法がわからない場合もあります。

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

自動レンダリング

このバージョンのTWIGエンジンは、自動レンダリングを使用して、レンダリング配列(運命の)からレンダリングするすべてのフィールドに対してRSIが{{node.field_somefield | render}}と入力しないようにし、安全に{{nodeと入力できるようにします。 field_something}}

コンパイルされたテンプレートTFDのレンダリング時に、呼び出された変数が文字列、呼び出し可能、または配列であるかどうかを確認します。文字列の場合は単純に$stringをエコーし​​、呼び出し可能の場合は適切なmethod()を返します。また、配列の場合は、レンダリング可能な配列であると想定し、render($ string)にマップします。Drupalの方法。

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

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

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

于 2012-12-28T17:58:43.743 に答える