2013-02-08 20 views
7

在我edit.html.twig我:如何獲取實體或將變量傳遞給Symfony2樹枝窗體小部件?

{% 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只是一個bootstraped * form_div_layout.html.twig *
而在此Widget我沒有img_src也不是實體
任何想法如何獲得小部件中的實體?它應該被傳遞給窗體小部件還是有另一種方式?我究竟做錯了什麼?

回答

8

每個symfony表單類型extents AbstractType類。

AbstactType類有方法:

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

} 

您可以在表單類型創建這個方法並在樹枝下一個:

{{ asset(img_src) }} 
+0

它仍然給我_variable「實體」不exist_。在控制器中:'$ editForm = $ this-> createForm(new EntityType(),$ entity,array('em'=> $ em,'entity'=> $ entity));'。在EntityType的setDefaultOptions方法中:'$ resolver-> setRequired(array('entity'));'和BuildView方法:'$ view-> vars ['entity'] = $ options ['entity'];'。在表單主題塊__entity_field_widget_ {{dump(entity)}}中。我錯過了什麼? (Dumped $ options ['entity'] - 這是我所需要的) – CRONUS

+3

視圖變量僅在當前表單級別可見 - 聲明的位置。在像「entity_field」這樣的家長小部件中,嘗試使用form.parent.vars.entity,form.parent.vars.img_src –

+0

就是這樣;)謝謝 – CRONUS

相關問題