2013-04-01 30 views
10

Tôi đã cố gắng ghi đè lên phần mở rộng của biểu mẫu Twig để tôi có thể hiển thị hàng kiểu Khởi động Twitter. Một hình thức hàng twitter boostrap nên xem xét như thế này:Twig Form Theming - form_label thuộc tính lớp

<div class="control-group"> 
    <label class="control-label" for="idOfMainInput">Label Name:</label> 
    <div class="controls"> 
     <input type="text" id="idOfMainInput" name="someDumbName"> 
    </div> 
</div> 

Các cơ sở cành lá div style form_row khối được định nghĩa trong this link như sau:

{% block form_row %} 
{% spaceless %} 
    <div> 
     {{ form_label(form) }} 
     {{ form_errors(form) }} 
     {{ form_widget(form) }} 
    </div> 
{% endspaceless %} 
{% endblock form_row %} 

Vì vậy, suy nghĩ của tôi là chỉ cần đặt divs cần thiết trong và mã cứng khi cần thiết các mục nhập lớp (ví dụ: trong div chính) nhưng chuyển giá trị 'attr' cho các phần form_label, form_errors và form_widget. Tôi đã lấy form_errors từ bây giờ, nên tôi không quá sâu vào nó. Đây là những gì tôi đã cố gắng:

{% form_theme form _self %} 
{% block form_row %} 
{% spaceless %} 
<div class="control-group"> 
    {{ form_label(form, 'test label name', { 'attr': {'class': 'control-label'} }) }} 
    <div class="controls"> 
    {{ form_widget(form) }} 
    {{ form_errors(form) }} 
    </div> 
</div> 
{% endspaceless %} 
{% endblock form_row %} 

Vấn đề, tuy nhiên, không có vấn đề gì tôi cố gắng, phần mở rộng form_label không sử dụng "kiểm soát nhãn" như lớp học của tôi (và nó sẽ theo mã nguồn gắn nó nếu có những cái hiện có, như "bắt buộc"). Dưới đây là những gì tôi nhận được khi tôi xem nguồn của trang được hiển thị:

<div class="control-group"> 
    <label for="form_rsa_id" class="required">test label name</label> 
    <div class="controls"> 
     <input type="number" id="form_rsa_id" name="form[rsa_id]" required="required" /> 
    </div> 
</div> 

Như bạn có thể thấy, lớp = "bắt buộc" ở đó và được lấy từ thuộc tính biểu mẫu cơ sở, nhưng nó phải là lớp = "nhãn điều khiển bắt buộc", mà nó không phải.

Kinda mất mát ở đây, vì tài liệu (cũng như nguồn) nói rằng người ta nên sử dụng ký hiệu "form_label (xem, nhãn, biến)". Liên kết tới tài liệu here.

+2

http://stackoverflow.com/questions/11641727/apply-class-to-symfony2-form-label – gatisl

Trả lời

13

Tôi nghĩ bạn cần sử dụng label_attr thay vì attr.

+0

Tuyệt vời, cảm ơn! :) – Sarel

+1

Đối với Symfony 2.1 là 'label_attr' – Erioch

+1

Cảm ơn @Erioch, chỉ cho mục đích thông tin, tìm thấy nó trong tài liệu vừa mới: http://symfony.com/doc/2.1/reference/forms/twig_reference.html – Sarel

1

Đối với bất kỳ ai vẫn muốn làm điều này, Symfony 2.6 đi kèm với Bootstrap form theme sẽ thực hiện việc này cho bạn.

Các vấn đề liên quan