2012-02-28 29 views
9

私はSymfonyフォームのテーマファイルform_div_layout.html.twigで利用できるすべての変数を取得したいと思います。私はSymfonyの公式ドキュメントを読んでウェブで検索しましたが、これに関する有益な情報は見つかりませんでした。form_div_layout.html.twigで使用できる変数の完全なリストはありますか?

+0

にダンプされます役に立った? – coma

+0

私はこれでも多くの時間を無駄にしています。 –

答えて

1

あなたは、元のファイルのうち、もののすべてを引き出し、あなたが必要なだけoverloadなものができます。

vendor/symfony/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig 
+0

実際には、コレクションにフォームがあり、コレクションのウィジェットに親フォームとは異なる別のテーマを使用したいのですが、これをアーカイブする方法を忘れました。 – imikay

+0

私はカスタムフィールドのカスタムテーマを作成しようとしましたが、ウィジェットはお互いを参照し、チェーンをたどってそれぞれをオーバーライドしようとしましたが、私は迷っています。 – imikay

+0

あなたがこれまで持っていたものを貼り付けることができますか?それを手伝ってもらえますか? – chasen

7

私が利用可能な変数(上のドキュメントの欠如であること、最近は同じ問題を打ちます属性)をテーマに使用しています。最終的には、私が知っていた変数をベンダーのフォルダ(検索に時間がかかっていました)から検索して、他に利用可能なものがあるかどうかを調べることで解決策を見つけました。

私にとって最高の場所はここで見ていた:Symfonyの\コンポーネント\フォーム\拡張\コア\タイプ

基本型、FIELDTYPEであることがプロトタイプがある

$view 
     ->set('form', $view) 
     ->set('id', $id) 
     ->set('name', $name) 
     ->set('full_name', $fullName) 
     ->set('errors', $form->getErrors()) 
     ->set('value', $form->getClientData()) 
     ->set('read_only', $form->isReadOnly()) 
     ->set('required', $form->isRequired()) 
     ->set('max_length', $form->getAttribute('max_length')) 
     ->set('pattern', $form->getAttribute('pattern')) 
     ->set('size', null) 
     ->set('label', $form->getAttribute('label')) 
     ->set('multipart', false) 
     ->set('attr', $form->getAttribute('attr')) 
     ->set('types', $types) 
    ; 

buildView

経由でこれらの変数を提供しますallow_addとallow_deleteのようにコレクション型にのみ存在する属性は、同じフォルダー内のCollectionTypeを参照してください。

ベースのFieldTypeの後に、これが完全なリストであるように見えます。まあ

CheckboxType.php:  ->setAttribute('value', $options['value']) 
ChoiceType.php:   ->setAttribute('choice_list', $options['choice_list']) 
ChoiceType.php:   ->setAttribute('preferred_choices', $options['preferred_choices']) 
ChoiceType.php:   ->setAttribute('multiple', $options['multiple']) 
ChoiceType.php:   ->setAttribute('expanded', $options['expanded']) 
ChoiceType.php:   ->setAttribute('required', $options['required']) 
ChoiceType.php:   ->setAttribute('empty_value', $emptyValue) 
CollectionType.php:  ->setAttribute('prototype', $prototype->getForm()); 
CollectionType.php:  ->setAttribute('allow_add', $options['allow_add']) 
CollectionType.php:  ->setAttribute('allow_delete', $options['allow_delete']) 
DateTimeType.php:  ->setAttribute('widget', $options['widget']); 
DateType.php:   ->setAttribute('formatter', $formatter) 
DateType.php:   ->setAttribute('widget', $options['widget']); 
FormType.php:   ->setAttribute('virtual', $options['virtual']) 
MoneyType.php:   ->setAttribute('currency', $options['currency']) 
PasswordType.php:  ->setAttribute('always_empty', $options['always_empty']); 
RadioType.php:   ->setAttribute('value', $options['value']) 
TimeType.php:   ->setAttribute('widget', $options['widget']) 
TimeType.php:   ->setAttribute('with_seconds', $options['with_seconds']) 
+0

ありがとう、私は試してみると、私はそれらを使用する方法を参照してください。 – imikay

+0

'collectionType'では、コレクションに含まれる各入力フィールドをどのように反復処理できますか?フォーム全体の親要素や部分にアクセスする方法を知っていますか? [この質問を参照してください](http://stackoverflow.com/questions/26184990/set-the-input-labels-for-each-field-as-headers-in-symfony-collection-widget) –

16

、あなたはコンテキストを繰り返すことによって、各ブロック内のすべての利用可能な変数を取得することができます:

{% block form_widget_simple %} 
<ol> 
    {% for key, value in _context %} 
    <li>{{ key }}</li> 
    {% endfor %} 
</ol> 
{% spaceless %} 
    {% set type = type|default('text') %} 
    <input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/> 
{% endspaceless %} 
{% endblock form_widget_simple %} 

そして、あなたはあなたを使用したい場合は、実際のクラスを上書きする必要がありますそれらのウィジェットをレンダリングしている、ちょうど@Gregoireが示唆したように、あなたがバージョン1.5(http://twig.sensiolabs.org/doc/functions/dump.html)から{{ dump(_context) }}を使用することができ、... AbtractType :: buildViewで

を見て、それは情報の大きな額を印刷されることに注意してください。

+1

'{{dump(value)}}'をループ内で使用して、変数の内容を表示します。 – Gregoire

+0

ああ、ありがとうございました。 –

+0

@Gregoire In Symfony 2.5 '{{dump(value)}}'は、値がオブジェクトの場合にページ全体を白くします(メモリリークがわかっていることがわかります)。ダンプ)。 –

1

ここに私の答えを参照してください:https://stackoverflow.com/a/41020474/5758328

申し訳ありません...あなたが私を見つけたあなたは、単に

{% dump %} 

を使用する必要があるとテンプレートで利用可能なすべての変数は、プロファイラ

関連する問題