Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony2]"errors" does not exist
Forum PHP.pl > Forum > PHP > Frameworki
q3trm
Nie mogę dojść gdzie popełniam błąd dry.gif , to mój pierwszy formularz w Symfony przykład z cookbook.


  1. public function contactAction()
  2. {
  3. $enquiry = new Enquiry();
  4.  
  5. $form = $this->createForm(new EnquiryType(), $enquiry);
  6.  
  7. $request= $this ->getRequest();
  8.  
  9. if ($request == 'POST') {
  10. $form ->bind($request);
  11.  
  12. $validator = $this->get('validator');
  13. $errors = $validator->validate($enquiry);
  14.  
  15. if ($form ->isValid()) {
  16.  
  17. if (count($errors) > 0) {
  18. return $this ->render('MultimediaBlogBundle:Default:contact.html.twig', array(
  19. 'errors' => $errors ));
  20. }
  21. }
  22. return $this -> redirect($this->generateUrl('multimedia_contact'));
  23. }
  24. return $this ->render('MultimediaBlogBundle:Default:contact.html.twig', array(
  25. 'form' => $form->createView()));
  26. }
  27.  
  28.  


  1. <ul>
  2. {% for error in errors %}
  3. <li>{{ error.message }}</li>
  4. {% endfor %}
  5. </ul>


skowron-line
  1. var_dump($errors);
q3trm
Znalazłem pierwszy błąd

  1. if ($request == 'POST')


  1. if ($request -> getMethod() == 'POST')


teraz przynajmniej instrukcja się wykonuje snitch.gif


EDIT//
  1. public function contactAction()
  2. {
  3. $enquiry = new Enquiry();
  4.  
  5. $form = $this->createForm(new EnquiryType(), $enquiry);
  6.  
  7. $request= $this ->getRequest();
  8.  
  9. if($request-> getMethod() == 'POST') {
  10. $form ->bind($request);
  11.  
  12. $validator = $this->get('validator');
  13. $errors = $validator->validate($enquiry);
  14.  
  15.  
  16. if (count($errors) > 0) {
  17. return $this ->render('MultimediaBlogBundle:Default:contact.html.twig', array(
  18. 'errors' => $errors,
  19. 'form' =>$form ->createView(),
  20. ));
  21. }
  22.  
  23. return $this -> redirect($this->generateUrl('multimedia_contact'));
  24.  
  25. }
  26. return $this ->render('MultimediaBlogBundle:Default:contact.html.twig', array(
  27. 'form' => $form->createView()));
  28.  
  29. }
  30.  


Wszystko działa poprawnie bez użycia metody IsValid().
minolone
Skąd bierzesz zmienną $request questionmark.gif Musisz dołączyć

use Symfony\Component\HttpFoundation\Request;

oraz w

public function contactAction()
dodać
public function contactAction(Request $request)

zobacz tutaj jak jest zrobione, Link
a po pozytywnym przejściu walidacji możesz te dane obsłużyć np. dodać do bazy Link

lub najprościej wygeneruj sobie wszystko za pomocą konsoli. Możesz w niej zrobić wszystko wygenerować Entity, settery i gettery, formularz, kontroler w wersji full, będziesz miał przykład jak jest zrobiony formularz jak są odbierane dane,

PS. używaj wersji developerskiej tam będziesz miał wszystko pokazane jak się coś wykrzaczy
Crozin
Dlaczego nie korzystasz ze standardowej obsługi błędów formularzy?
  1. $request= $this->getRequest();
  2.  
  3. $enquiry = new Enquiry();
  4. $form = $this->createForm(new EnquiryType(), $enquiry);
  5.  
  6. if ($request->isMethod('POST')) {
  7. $form->bind($request);
  8.  
  9. if ($form->isValid()) {
  10. return $this->redirect($this->generateUrl('multimedia_contact'));
  11. }
  12. }
  13.  
  14. return $this ->render('MultimediaBlogBundle:Default:contact.html.twig', array('form' => $form->createView()));

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.