2013-02-08 5 views
7

は私が持っている:そこエンティティを取得するか、変数をSymfony2 twigフォームウィジェットに渡すには?私<em>edit.html.twig</em>で

{% form_theme edit_form 'MyBundle:Entity:form.html.twig' %} 
{% set img_src = asset('120x100.jpg') %} 
{{ dump(img_src) }} 
{{ dump(entity) }} 
{{ form_widget(edit_form, {'form_type': 'horizontal', 'img_src': img_src }) }} 

私は問題なくダンプimg_srcエンティティを持っています。
form.html.twig私が持っている:

{% extends 'MyBundle:Form:bootstrap.html.twig' %} 
{% block _entity_field_widget %} 
    {{ dump(img_src) }} 
    {{ dump(entity) }} 
    {% set type = 'hidden' %} 
    {{ block('form_widget_simple') }} 
{% endblock _channel_media_widget %} 

bootstrap.html.twigはちょうどブートストラップ* form_div_layout.html.twig *
されており、そのウィジェットに私はimg_srcを持っていませんまたエンティティ
ウィジェットでエンティティを取得する方法はありますか?ウィジェットをフォームに渡すべきか、別の方法がありますか?私は間違って何をしていますか?

答えて

8

各symfonyフォームタイプのエクステントは、AbstractTypeクラスです。

public function buildView(FormView $view, FormInterface $form, array $options) 
{ 
    $view->set('img_src', '120x100.jpg'); 
    $view->set('my_variable', $foo); 

} 

あなたのフォームタイプでこのメソッドを作成し、小枝の次のことができます:それはまだ私にexist_しない_variable「実体」を与える

{{ asset(img_src) }} 
+0

AbstactTypeクラスはメソッドを持っています。コントローラでは: '$ editForm = $ this-> createForm(新しいEntityType()、$ entity、array( 'em' => $ em、 'entity' => $ entity));'。 EntityType setDefaultOptionsメソッド: '$ resolver-> setRequired(array( 'entity'));'およびBuildViewメソッド: '$ view-> vars ['entity'] = $ options ['entity'];'。フォームテーマブロック__entity_field_widget_ {{dump(entity)}}。私は何を取りこぼしたか? (ダンプされた$ options ['entity'] - 私が必要なもの) – CRONUS

+3

ビュー変数は現在のフォームレベルでのみ表示されます。 "entity_field"のような親ウィジェットでは、form.parent.vars.entity、form.parent.vars.img_srcを使用してみてください –

+0

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

関連する問題