2012-09-03 31 views
19

Trong Symfony2, thành phần select html được trả lại như một đối tượng ChoiceType, được sử dụng thực sự cũng cho checkboxesradiobuttons.Chọn với optgroup trong Symfony 2.0

Có ai đó thực sự biết cách kết xuất lựa chọn với tùy chọn nhóm trong Symfony2?

Đối với lợi ích của sự hoàn chỉnh, ở đây tôi báo cáo một ví dụ về một chọn với optgroup thẻ (ví dụ từ w3cschools):

<select> 
    <optgroup label="Swedish Cars"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    </optgroup> 
    <optgroup label="German Cars"> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
    </optgroup> 
</select> 

Hơn nữa, thông báo rằng có một bài tương tự here, nhưng câu trả lời không thuyết phục.

+0

Dường như được sửa trong sf2.1 ([xem tài liệu] (http://symfony.com/doc/master/reference/forms/types/entity.html#group- bởi)). Bạn đang sử dụng sf2.0 hoặc sf2.1? – j0k

+0

SF2.0! Nhưng SF2.1 đang ở RC2 ngay bây giờ! Vì vậy, tốt hơn là chờ bản phát hành ổn định 2.1 đầu tiên ... Tôi có nên hủy câu hỏi không? – JeanValjean

+0

Không đóng, có thể có một cách giải quyết để có optgroup trên sf2.0, nhưng tôi không biết điều đó. – j0k

Trả lời

34

Làm điều này:

$car_choices = array(
    'Swedish Cars' => array(
     'volvo' => 'Volvo', 
     'saab' => 'Saab', 
    ), 
    'German Cars' => array(
     'mercedes' => 'Mercedes', 
     'audi' => 'Audi' 
    ) 
); 

$form = $this->createFormBuilder() 
     ->add('car', 'choice', array(
      'label' => 'Choose your car', 
      'choices' => $car_choices, 
      )) 
     ->getForm(); 

trình cho Symfony 2.0.x

+1

Nó hoạt động giống như một nét duyên dáng trong ứng dụng Symfony2.0.17 của tôi! Muchas gracias ... – JeanValjean

+0

Giống như trong symfony 1.x: mảng mảng. – j0k

+0

Hoàn hảo! Thay thế tuyệt vời cho việc sử dụng các thực thể. –

16

Nó phụ thuộc như thế nào Entity của bạn được định nghĩa và cách bạn nhóm thực thể của bạn. Giả sử nhóm được thực hiện cho một tham số trong đối tượng của bạn, hãy nói "thương hiệu". Bạn có thể làm:

$builder->add('cars', null, array(
    'group_by'=> 'brand' 
)); 
+0

cách tự tham khảo. như Danh mục và Danh mục phụ? –

+0

@Daskul xin lỗi tôi không hiểu ý bạn là gì. – Sylvain

+0

mối quan hệ tự tham chiếu. bạn có một thực thể có tham chiếu đến cùng một loại thực thể với tư cách là thực thể của nó. Giống như trên Danh mục. Tôi muốn tất cả các danh mục của mình trong một bảng cơ sở dữ liệu nhưng vẫn có thể tạo phân cấp. Ví dụ Tôi sẽ tạo ra các loại máy tính, máy tính xách tay, máy tính để bàn nhưng tôi muốn máy tính xách tay và máy tính để bàn theo thể loại máy tính –

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