2013-09-30 13 views
5

Điều này thực sự kỳ lạ, và nó đã xảy ra sau khi cập nhật một mẫu Twig:Symfony2 Mẫu Cho Lỗi catchable Về FormView

Controller Phần

$registration = new Registration(); 
    $form = $this->createForm(new RegistrationType(), $registration, array(
     'action' => $this->generateUrl('account_create'), 
    )); 

    return $this->render(
     'AcmeCommonBundle:Security:register.html.twig', 
     array(
      'form' => $form->createView(), 
      'contentBackColor' => 'canvasGreen' 
      ) 
    ); 

Template Phần

{{ form_start(form) }} 
    {{ form_errors(form) }} 

    <p>All Fields Are Required</p> 

    <div class="form-row"> 
     {{ form_label(form.firstname, "First Name") }} 
     {{ form_widget(form.firstname) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.firstname) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.lastname, "Last Name") }} 
     {{ form_widget(form.lastname) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.lastname) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.username, "Username") }} 
     {{ form_widget(form.username) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.username) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.email, "Email") }} 
     {{ form_widget(form.email) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.email) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.password, "Password") }} 
     {{ form_widget(form.password) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.password) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.confirm, "Confirm Password") }} 
     {{ form_widget(form.confirm) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.confirm) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.terms, "Terms & Conditions") }} 
     {{ form_widget(form.terms) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.terms) }} 
    </div> 

{{ form_end(form) }} 

LỗiNhư bạn có thể thấy rõ ràng, tôi thực sự dựng FormView, và thực tế là nó null sẽ dẫn tôi tin rằng điều này liên quan đến lớp RegistrationType(), nhưng không có gì thay đổi ở đó, chỉ có trong phần này. mẫu để hiển thị?

+1

Bạn có thể thêm một cái gì đó để các cành gây ra một lời kêu gọi được thực hiện đối với các hình thức mà trước đó đã không được thực hiện. Bạn có thể cho chúng tôi biết những thay đổi bạn đã thực hiện đối với mẫu không? –

+0

Tôi đã tìm ra và trả lời câu hỏi của riêng tôi bên dưới. Hóa ra đó là một vấn đề với các loại hình phức hợp. – JRL

Trả lời

5

Được rồi, điều này thực sự cụ thể và tôi đã tìm ra, vì vậy tôi nghĩ tôi sẽ cập nhật ở đây cho bất kỳ ai tìm thấy điều này trên Google.

Vấn đề là thực hiện ban đầu của tôi về hình thức trông như thế này trong cành lá:

{{ form(form) }} 

Điều này không là đi qua toàn bộ biến form và hiển thị tất cả những gì có được để hiển thị.

Vấn đề là biến số lượt xem của tôi sai. Đây là vì đối tượng RegistrationType() thêm một đối tượng UserType() như một lĩnh vực user như thế này:

->add('user', new UserType()) 

Điều này có nghĩa rằng cuộc gọi:

{{ form_label(form.firstname, "First Name") }} 

nên đã:

{{ form_label(form.user.firstname, "First Name") }} 

Các chính lý do tôi không nắm bắt được lỗi này là do các lỗi mà Twig đưa ra không cho tôi biết biểu mẫu nào gọi nó là không thành công, và tôi tự động giả định nó là lần đầu tiên một, {{ form_start(form) }}. Tuy nhiên, cuộc gọi đó vẫn ổn.

Tôi đã xem HTML được hiển thị và nhận thấy khoảng cách đó đến mức nào và điều đó đã khiến tôi điều tra dòng cụ thể là vấn đề.

Các cành mẫu tại trông như thế này và làm cho đúng:

{{ form_start(form) }} 
    {{ form_errors(form) }} 

    <p>All Fields Are Required</p> 

    <div class="form-row"> 
     {{ form_label(form.user.firstname, "First Name") }} 
     {{ form_widget(form.user.firstname) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.user.firstname) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.user.lastname, "Last Name") }} 
     {{ form_widget(form.user.lastname) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.user.lastname) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.user.username, "Username") }} 
     {{ form_widget(form.user.username) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.user.username) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.user.email, "Email") }} 
     {{ form_widget(form.user.email) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.user.email) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.user.password.password, "Password") }} 
     {{ form_widget(form.user.password.password) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.user.password.password) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.user.password.confirm, "Confirm Password") }} 
     {{ form_widget(form.user.password.confirm) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.user.password.confirm) }} 
    </div> 

    <div class="form-row"> 
     {{ form_label(form.terms, "Terms & Conditions") }} 
     {{ form_widget(form.terms) }} 
     <div class="clear-fix"></div> 
    </div> 
    <div class="form-errors-row"> 
     {{ form_errors(form.terms) }} 
    </div> 

{{ form_end(form) }} 
Các vấn đề liên quan