Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]Problem z formularzem
Vion
post
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 2
Dołączył: 27.06.2008

Ostrzeżenie: (0%)
-----


Witam
Mam taki problem. Stworzyłem formularz przez CRUD. Wygenerował mi on taki formularz dodawania nowego miasta
  1. <h1>City creation</h1>
  2.  
  3. <form action="{{ path('city_create') }}" method="post" {{ form_enctype(form) }}>
  4. {{ form_widget(form) }}
  5.  
  6.  
  7. <p>
  8. <button type="submit">Create</button>
  9. </p>
  10. </form>
  11.  
  12. <ul class="record_actions">
  13. <li>
  14. <a href="{{ path('city') }}">
  15. Back to the list
  16. </a>
  17. </li>
  18. </ul>



i wszystko ładnie działa, dodaje miasto do bazy. ale gdy zamienię ten formularz na taki, to już nie dodaje mi do bazy. Nie wyświetla też żadnego błędu.

  1. <h1>City creation</h1>
  2.  
  3. <form action="{{ path('city_create') }}" method="post" {{ form_enctype(form) }}>
  4. {{ form_widget(form.name) }}
  5.  
  6.  
  7. <p>
  8. <button type="submit">Create</button>
  9. </p>
  10. </form>
  11.  
  12. <ul class="record_actions">
  13. <li>
  14. <a href="{{ path('city') }}">
  15. Back to the list
  16. </a>
  17. </li>
  18. </ul>


z tego co ustaliłem to formularz chyba nie przechodzi walidacji w kontrolerze. Co zrobiłem źle.
o to akcja odpowiedzialna za dodanie nowego miasta

  1. public function createAction(Request $request)
  2. {
  3.  
  4. $entity = new City();
  5. $form = $this->createForm(new CityType(), $entity);
  6. $form->bind($request);
  7. if ($form->isValid()) {
  8. $em = $this->getDoctrine()->getManager();
  9. $em->persist($entity);
  10. $em->flush();
  11. return $this->redirect($this->generateUrl('city_show', array('id' => $entity->getId())));
  12. }
  13.  
  14. return $this->render('HongeroDishBundle:City:new.html.twig', array(
  15. 'entity' => $entity,
  16. 'form' => $form->createView(),
  17. ));
  18. }


--------------------
www.zapalara.pl
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Prawdopodobnie przyczyną jest brak tokenu CSRF. Nawet jeżeli jawnie wygenerujesz każde z pól formularza, nadal powinieneś użyć {{ form_rest(form) }} w celu wygenerowania "pobocznych" elementów.
Go to the top of the page
+Quote Post
Vion
post
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 2
Dołączył: 27.06.2008

Ostrzeżenie: (0%)
-----


ale, nie chce aby generowało mi w widoku wszystkich pól


--------------------
www.zapalara.pl
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Więc powinieneś skorzystać z innego typu dla formularza. Nie wyświetlają Ci się błędy, ponieważ generują się one dla elementów niepowiązanych bezpośrednio z form.name.
Go to the top of the page
+Quote Post
Vion
post
Post #5





Grupa: Zarejestrowani
Postów: 112
Pomógł: 2
Dołączył: 27.06.2008

Ostrzeżenie: (0%)
-----


nie rozumiem, jak innego typu?


--------------------
www.zapalara.pl
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Jeżeli nie chesz generować wszystkich (wymaganych) pól typu CityType powinieneś utworzyć nowy typ, dla formularza.
Go to the top of the page
+Quote Post
thek
post
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jeśli nie chcesz korzystać wprost z tej encji to utwórz sobie nowy Type i w nim określ interesujące Cię pola. Zależnie teraz od definicji encji (jeśli z niej korzystasz jako źródło danych) musisz zmodyfikować albo ją, albo walidator. Możesz także posłużyć się grupami walidacji by określić, które pola będą brane pod uwagę podczas niej. Jeśli chcesz by całość była jeszcze bardziej zintegrowana z tym typem, to możesz posłużyć się symfonowym mechanizmem tworzenia bloku formularza dla danego typu. Poczytaj o tworzeniu customowych themów dla typów wtedy. Świetne rozwiązanie dla ciutkę bardziej skomplikowanych, przykładowo zależnych selectów z autocomplete czy opartych o kolekcje.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 05:28