2014-09-08 3 views
0

Symfony 양식 레이블을 사용자 정의하여이 필수 필드의 별표 (*)를 Symfony doc을 통해 사용자 정의하려고합니다. 하지만 내 별표 <span<label 태그 안에 있어야하므로 여기에 설명 된대로 form_label 블록을 사용자 정의해야했습니다. 지금까지는 좋았지 만 사용자 정의는 확인란/라디오 필드의 각 항목 (레이블)에도 적용됩니다. 그것은 이상하게 보입니다.타겟 필드 유형을 기반으로 한 Symfony 양식 레이블 사용자 정의

어떻게하면 상위 레이블에만 서식을 지정하기 위해 레이블 사용자 정의 블록에서 필터링 할 수 있습니까?

여기 내 오버라이드 (override) 코드 : 간단히

{% block form_label -%} 
    {% if label is not sameas(false) -%} 
     {% 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 %}> 
      {{ label|trans({}, translation_domain) }} 
      {% if required %} <span class="required" title="This field is required">*</span> {% endif %} 
     </label> 
    {%- endif %} 
{%- endblock form_label %} 

,이 블록 내부 변수가이 레이블을 목표로 필드 유형을 식별 할.

답변

1

글쎄,이 재정의 된 블록에서 사용할 수있는 변수를 약간 조정하여 해결했습니다. 이 필드에 정의 된 checked 속성이있는 경우 아래는 내 상태

{% if (required) and (form.vars.checked is not defined) %} 
     <span class="validation-error-star" title="This field is required">*</span> 
    {% endif %} 

에 대한 오버라이드 (override) 코드 대신의 조건으로 만 필요한 변수, 난 또 다른 조건을 추가; 일반적으로 radio/checkbox 필드 유형에는 있습니다.

이렇게하면 레이블 재 지정 블록 내부에서 필드 유형을 구분할 수있었습니다. 이것이 누군가를 돕기를 바랍니다. :)