2015-07-10 16 views
5

Tôi có một mẫu có nhiều giỏ hàng. Có thể có số lượng xe hơi thay đổi, không có giới hạn cố định.Làm cách nào để hiển thị cùng một biểu mẫu nhiều lần trong Symfony2?

Trong mỗi giỏ hàng, tôi muốn có một biểu mẫu mà người dùng có thể chọn quốc gia. Nếu anh ta gửi biểu mẫu, chi phí vận chuyển sẽ được thiết lập.

Bây giờ tôi đang làm như sau để đạt được nó trong cành lá:

{% for cart in carts %} 
    {# Some template stuff #} 
    {{ form_start(form) }} 
     <div class="form-input"> 
     <label for="country" class="middle-color">Country <span class="active-color">*</span></label> 
     {{ form_widget(form.country) }} 
    {{ form_end(form) }} 
{% endfor %} 

Đây là người xây dựng hình thức của tôi:

$form = $this->createFormBuilder() 
    ->add('country', 'choice', array('choice_list' => $choiceList, 'label' => 'country', 
     'attr' => array('class' => "custom-selectbox dark-color light-gradient"))) 
    ->getForm(); 

Bây giờ vấn đề là logic này hoạt động tốt cho các giỏ đầu tiên , nhưng không có biểu mẫu nào được hiển thị cho các giỏ hàng tiếp theo. Làm thế nào tôi có thể đối phó với điều này?

Trả lời

-1

Bạn nên sử dụng collection loại biểu mẫu. Dưới đây là hướng dẫn để bắt đầu với How to Embed a Collection of Forms

P.S. Lưu ý rằng sau khi kết xuất thành phần biểu mẫu, một thành phần Biểu mẫu đánh dấu nó là kết xuất và không hiển thị lại một lần nữa.

+0

Tôi không thấy thế nào điều này sẽ giúp tôi. Tôi tạo một choice_list phụ thuộc vào dữ liệu bên ngoài. Tôi không muốn hiển thị choice_list nhiều lần nhưng toàn bộ biểu mẫu nhiều lần – KhorneHoly

2

Tôi đã xem xét vấn đề này và một câu hỏi khác về vấn đề tương tự. You can find my first answer for a solution here.

Để bọc nó lên, tôi không gọi hàm createView() trên biểu mẫu trong bộ điều khiển, như thường được thực hiện khi chuyển biểu mẫu sang dạng xem, nhưng trong chính chế độ xem cành.

Ví dụ: trong hành động điều khiển của bạn, bạn làm trả lại đối tượng dưới hình thức bản thân:

return $this->render('AppBundle:Cart:list.html.twig', ['formObject' => $form]; 

và theo quan điểm của bạn, bạn sẽ thiết lập các hình thức trong mỗi vòng lặp:

{% for cart in carts %} 
    {# Some template stuff #} 
    {% set form = formObject.createView %} 
    {{ form_start(form) }} 
     <div class="form-input"> 
     <label for="country" class="middle-color">Country <span class="active-color">*</span></label> 
     {{ form_widget(form.country) }} 
    {{ form_end(form) }} 
{% endfor %} 
Các vấn đề liên quan