2013-02-08 13 views
7

Trong edit.html.twig tôi tôi có:Làm thế nào để có được thực thể hoặc chuyển biến cho Symfony2 twig form widget?

{% 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 }) }} 

Ở đó tôi có img_srcthực thể đổ không có vấn đề.
Trong form.html.twig tôi có:

{% 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 chỉ là một bootstraped * form_div_layout.html.twig *
Và trong widget mà tôi không có img_src cũng không phải pháp nhân.
Bất kỳ ý tưởng nào về cách nhận thực thể trong tiện ích con? Nó có nên được thông qua để tạo thành widget hay không? Tôi đang làm gì sai?

Trả lời

8

Mỗi loại biểu mẫu của symfony mở rộng lớp AbstractType.

lớp AbstactType có phương pháp:

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

} 

Bạn có thể tạo phương pháp này vào loại hình thức của bạn và tiếp theo trong cành lá của bạn:

{{ asset(img_src) }} 
+0

Nó vẫn mang lại cho tôi _Variable "thực thể" không exist_. Trong bộ điều khiển: '$ editForm = $ this-> createForm (new EntityType(), $ entity, array ('em' => $ em, 'entity' => $ entity));'. Trong phương thức EntityType setDefaultOptions: '$ resolver-> setRequired (mảng ('entity'));' và trong phương thức BuildView: '$ view-> vars ['entity'] = $ options ['entity'];'. Trong khối chủ đề biểu mẫu __entity_field_widget_ {{dump (entity)}}. Tôi đã bỏ lỡ cái gì? (Các tùy chọn $ đã gộp [[thực thể]] - đó là những gì tôi cần) – CRONUS

+3

Các biến xem chỉ hiển thị ở cấp biểu mẫu hiện tại - nơi được khai báo. Trong các tiện ích cha mẹ như "entity_field", hãy thử sử dụng form.parent.vars.entity, form.parent.vars.img_src –

+0

Đó là nó;) Cảm ơn – CRONUS