2013-06-12 15 views
13

Câu hỏi này tương tự như another question. Có the solution cho thiết lập các lớp CSS là để thêm nó vào trong tham số thứ 3 của một cuộc gọi đến FormBuilder :: add():Cách đặt thuộc tính CSS ID thành đầu vào biểu mẫu Symfony2

->add('title', null, array('attr' => array('class'=>'span2'))) 

Thật không may, điều này không làm việc để thiết lập id CSS. Khi tôi làm

->add('title', null, array('attr' => array('id'=>'title-field'))) 

... điều này bị bỏ qua. ID vẫn giữ nguyên như namespace_formtype_field.

Làm cách nào để tôi có thể đặt ID CSS, nếu có?

+1

Bạn có thực sự muốn thay đổi ID được tạo tự động mặc định không? – Darmen

+1

Thật không may, có. Tôi có một ứng dụng web mà tôi muốn chuyển sang Symfony, nhưng tôi cần phải giữ cho các thử nghiệm Javascript và chức năng hoạt động. Một số người trong số họ dựa vào ID CSS. – Olav

+2

thử với twig {{form_widget (mẫu, {'attr': {'id': 'title-field'}})}} – Nisam

Trả lời

1

Tôi tin chắc rằng không có câu trả lời dễ dàng nào. Thực tế gần nhất dường như thay đổi đánh dấu bằng cách sử dụng form theming. Cảm ơn bạn Michi vì đã chỉ đường này.

4

Vì phần tử HTML không thể có nhiều ID, những gì bạn đang cố gắng thực hiện là không thể vì Symfony đã sử dụng ID trên các phần tử biểu mẫu.

Cách giải quyết này sẽ được thay đổi của bạn hoạt Javascript để sử dụng các lớp học để thay thế và sử dụng

->add('title', null, array(
    'attr' => array(
     'class'=>'title-field' 
    ) 
)) 

Một cách khác là thay đổi sử dụng ID của bạn hoạt Javascript để những Symfony.

+0

Pier-Luc, cảm ơn bạn, nhưng một trong những gợi ý của bạn có nghĩa là tôi có hai phiên bản thử nghiệm và Javascript của tôi, một cho Symfony, một cho việc thực hiện khác. Tôi muốn tránh điều này. – Olav

7

Ở cấp cành lá, bạn chỉ có thể làm điều này:

{{ form_widget(form. title, { 'id': 'title-field' }) }}

Thử nghiệm trên Symfony 2.3.4

21

Bạn có thể làm điều đó khi bạn render lĩnh vực của bạn trong cành lá, nếu bạn thiết lập id của bạn bên ngoài mảng 'thuộc tính' như sau:

{{ form_widget(form.field, { 'id': 'my_custom_id', 'attr': { 'class' : 'my_custom_class }})}} 
+1

Câu trả lời "đúng" hiện tại là sai. Trong Twig của bạn, bạn có thể thay đổi id như bạn đã nói, điều này cực kỳ hữu ích và có thể áp dụng, tuy nhiên hãy cẩn thận để làm cho id của bạn trở nên độc đáo hoặc bạn sẽ nhận được JS rất khó đoán trước – Zjoia