Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony2.3][SF][SF2] Problem z walidacją formularza
Forum PHP.pl > Forum > PHP > Frameworki
ZaqU
Mam problem z walidacją formularza, która - wydaje się - nie chce działać tak jak powinna.

Po czym to stwierdzam?
Po pierwsze metoda $form->isValid() zwraca zawsze true, nawet jeżeli dane są całkowicie niezgodne z tym co trzymam w validation.yml. Po drugie $form->getErrorsAsString() zwraca cały ciąg [FieldName1]: No errors, [FieldName2]: No errors ... itd.


Formularz tworzę w następujący sposób:
  1. public function indexAction()
  2. {
  3. return $this->render('MyBundle:MyView:index.html.twig', array(
  4. "form" => $this->createForm( new CategoryType(), new Category() )->createView()
  5. ));
  6. }


CategoryType:
  1. class CategoryType extends AbstractType {
  2. public function buildForm(FormBuilderInterface $builder, array $options) {
  3.  
  4. $builder ->add('name', 'text')
  5. ->add('categoryId', 'entity', array(
  6. 'class' => 'MyBundle:Category',
  7. 'property' => 'name',
  8. ));
  9. }
  10.  
  11. public function getName() {
  12. return 'my_form_name';
  13. }
  14. }


I oczywiście validation.yml. Nie wiedziałem którą wersję zastosować (czy dla Form/Type/CategoryType czy dla Entity/Category) dlatego użyłem obu, ale żadna nie działa.
  1. MyBundle/Form/Type/CategoryType:
  2. properties:
  3. - name:
  4. - NotBlank: ~
  5. - Length:
  6. min: 3
  7. max: 30
  8.  
  9. MyBundle/Entity/Category:
  10. properties:
  11. - name:
  12. - NotBlank: ~
  13. - Length:
  14. min: 3
  15. max: 30


Problem na pewno jest błahy, ale nie potrafię go rozwiązać już od wczoraj, a wszystko robiłem zgodnie z przykładami w dokumentacji Symfony.
skowron-line
a to isValid to gdzie masz questionmark.gif
ZaqU
W osobnej metodzie tego kontrolera (czyt. formularz generuje się i wyświetla w indexAction(), a jest wysyłany i przetwarzany w formAction() ).

  1. public function formAction() {
  2. $form = $this->createForm( new CategoryType(), new Category() );
  3.  
  4. if( $this->get('request')->getMethod() == 'POST' ) {
  5. $form->handleRequest( $this->get('request') );
  6. var_dump( $form->isValid() );
  7. }
  8. }


var_dump() zawsze zwraca true.
seeba
Miałem podobny problem z walidacją, właśnie wtedy gdy miałem powiązaną encję samą z sobą.

Wydaje mi się, że problem jest związany z powiązaniem z samym sobą. Niestety nie udało mi się tego rozwiązać.
ZaqU
Temat bardzo stary, ale udało mi się samodzielnie dojść do rozwiązania tego problemu. W logice samego kodu nie ma żadnego błędu. Problem leżał w pliku .yml, a dokładniej w ukośnikach. Okazało się, że przez przypadek użyłem niewłaściwej wersji ukośnika. \ to wersja dozwolona, nastomiast / są niedozwolone.

Wątek można zamknąć.
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.