Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][Symfony2] Problem z aktualizacją i dodawaniem kategorii
peter13135
post 4.07.2012, 11:23:53
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Stawiam pierwsze kroki we frameworku symfony2 i niemogę przeskoczyć problemu.
Mam 3 tabele :
questions (id, name, surname, email, question)
categories(id, name)
question_category(category_id, question_id).
Jak łatwo się domyśleć jest to relacja wiele do wielu.

Chcę zrobić aktualizację "questions". Zrobiłeem sobię kontroler :

  1. public function updateAction($id)
  2. {
  3. $request = Request::createFromGlobals();
  4. $question = $this->getDoctrine()->getRepository('AdmFormBundle:Question')->find($id);
  5. echo 'przed' . (count($question->categories));
  6. $form = $this->createForm(new QuestionType(), $question );
  7. if($request->getMethod() == 'POST')
  8. {
  9. $form->bindRequest($request);
  10. echo 'po' . (count($question->categories));
  11. if($form->isValid())
  12. {
  13. $em = $this->getDoctrine()->getEntityManager();
  14. $em->persist($question);
  15. $em->flush();
  16. $this->get('session')->setFlash('updated', $id);
  17. //return $this->redirect($this->generateUrl('question_get'));
  18. }
  19. }
  20. return array('form'=>$form->createView(), 'id'=>$id);
  21. }


Wyświetla on oczywiście formularz z polami (id, name, surname, email, question) oraz pole wielokrotnego wyboru kategorii.
Tutaj mój QuestionType :

  1.  
  2. class QuestionType extends AbstractType
  3. {
  4. public function buildForm(FormBuilder $builder, array $options)
  5. {
  6. $builder
  7. ->add('name', 'text', array('label'=>'Imię'))
  8. ->add('surname', 'text', array('label'=>'Nazwisko'))
  9. ->add('email', 'email', array('label'=>'E-mail'))
  10. ->add('question', 'textarea', array('label'=>'Pytanie'))
  11. ->add('categories', 'entity',
  12. array('label'=>'Kategorie',
  13. 'class' => 'AdmFormBundle:Category',
  14. 'multiple' => true,
  15. 'query_builder' => function($er)
  16. {
  17. return $er->createQueryBuilder('c')
  18. ->orderBy('c.id', 'ASC');
  19. }
  20.  
  21. ));
  22. }
  23.  
  24. public function getName()
  25. {
  26. return 'questionForm';
  27. }
  28.  
  29. }


Jak widzicie, do kontrolera dodałem 2 linjki kodu :
  1. echo 'przed' . (count($question->categories));

oraz
  1. echo 'po' . (count($question->categories));

Pierwsza wyświetla ilośc kategorii przed wysłaniem formularza, druga wyświetla ilość kategorii po wysłaniu formularza.
To działa prawidło. Wchodzę sobię w edycję "question" która jest przyporządkowana do jednej kategorii i wyświetla się "przed1".
Zaznaczam jeszcze jedną kategorię (czyli w swoim polu wielokrotnego wyboru mam już zaznaczone dwie opcje) kilkam submit i pod linijką "przed1" wyświetla się "po2".
Jednak W bazie danych nic się nie zmienia, zapytanie update wykonuję się tylko do tabeli questions. Do tabeli question_category nic się nie dodaje.

Moje pytanie : gdzie mam szukać błędu ?
Jakie pliki ewentualnie wam wkleić, by ułatwić wam pomoc dla mnie ? smile.gif

Ten post edytował peter13135 4.07.2012, 11:28:09


--------------------
:)
Go to the top of the page
+Quote Post

Posty w temacie


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 Wersja Lo-Fi Aktualny czas: 18.06.2025 - 20:45