2013-01-18 3 views
2

임베디드 컨트롤러 동작에서 폼을 생성 중입니다. 그리고 지금 나는 다음과 같은 문제에 직면 해있다. 이 경우 Form Theming은 작동하지 않습니다.Symfony2 임베디드 컨트롤러 동작에 의해 생성 된 Theming 폼

그래서 내가 무엇을 :

  1. tempalte "page.html.twig"

    {% block content %} 
    {% render 'MyBundle:Widget:index' %} 
    {% endblock %} 
    
  2. indexAction은() 형식과 다른 템플릿 렌더링을 생성합니다 "form.html.twig "일반적으로 form_row, form_rest 등을 사용하여 양식을 렌더링합니다.

그래서 이제는 양식 테마를 사용자 지정하려고합니다. 여기에 내 문제가 있습니다. 내가 page.html.twig의 코드

{% form_theme form _self %} 

을 넣어 , 나는 양식 변수가 존재하지 않는 오류가 발생했습니다. 그리고 올바른 형식 var는 임베디드 컨트롤러에서 나중에 생성됩니다. i가 포함 된 템플릿 "form.html.twig"의 테마 코드를 넣을 때, 나는 또 다른 오류 "변수"화합물은 "존재하지 않는"

{% block form_label %} 
{% spaceless %} 
    {% if not compound %} 
     {% set label_attr = label_attr|merge({'for': id}) %} 
    {% endif %} 
    {% if required %} 
     {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %} 
    {% endif %} 
    {% if label is empty %} 
     {% set label = name|humanize %} 
    {% endif %} 
    <label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %} {% if attr.tooltip is defined %}title="{{ attr.tooltip }}"{% endif %}>{{ label|trans({}, translation_domain) }}{% if required %}<span>*</span>{% endif %}</label> 
{% endspaceless %} 
{% endblock form_label %} 

코드의이 부분은이 파일에서 복사 된 가지고 https://github.com/symfony/symfony/blob/2.1/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig

이렇게 누군가에게 이렇게 해보려고 했습니까?

답변

3

직접 내 질문에 답하십시오.

템플릿이 서로를 확장하는 경우에만 작동합니다 Symfony2 워드 프로세서 http://symfony.com/doc/current/book/forms.html

이 {% form_theme 형태 _self의 %} 기능의 작은 문장이었다. 템플릿이 그렇지 않은 경우 form_theme을 별도의 템플릿으로 지정해야합니다.

그래서이이 문제를 해결하기 위해 두 가지 솔루션은 다음과 같습니다 별도의 파일로

  1. 이동 형태의 테마 코드 및

    {% form_theme form with 'fields.html.twig' %} 
    
  2. 양식을 떠날 사용하여 내장 템플릿에 포함 테마 코드는 양식이 생성되는 동일한 템플리트에 있지만 "form.html.twig"빈 템플리트에서 템플리트를 확장하십시오.

나는 두 번째 방법과 그 작업을 수행했지만 첫 번째 방법도 잘 동작 할 것이라고 확신합니다.