Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF2][Symfony2][Symfony] Wyświetlanie pola formularza
Forum PHP.pl > Forum > PHP > Frameworki
damianooo
Potrzebuję wyświetlić w TWIGu dane z obiektu powiązanego relacją.

Coś takiego jak pod linkiem (Embedded Forms) :
http://symfony.com/doc/2.5/book/forms.html

... a więc jest encja "Task", która jest powiązana relacją z encją "Category" i możliwe jest dostanie się do wartośći "name" encji "Category":

{{ form_row(form.category.name) }}


Próbowałem to zrobić u siebie

  1. public function buildForm(FormBuilderInterface $builder, array $options)
  2. {
  3. $builder
  4. ->add('hostType')
  5. ->add('guestType')
  6. ->add('numberOfPoints')
  7. ->add('match', new MatchType())
  8. ->add('user')
  9. ;
  10. }


ale dostaję błąd:

  1. Attempted to load class "TeamRepository" from namespace "My\TyperkaBundle\Repository" in /var/www/typerka/vendor/doctrine/orm/lib/Doctrine/ORM/Repository/DefaultRepositoryFactory.php line 68. Do you need to "use" it from another namespace?


lukaskolista
Przetłumacz treść błędu, to się dowiesz, że zapomniałeś o przestrzeni nazw dla TeamRepository.
damianooo
Tak już to udało mi się to poprawić.

problem mam ciągle jednak z wyświetleniem formularza, który potrzebuję.
Chciałbym część danych z encji "Type" wyświetlać jako pola edytowalne, natomiast część danych z encji "Match" wyświetlać jako pola nieedytowalne.
Nie wiem jak to zrobić sad.gif

Nie wiem czy powinienem to zrobić po Bożemu a wiec tak:

  1. public function newAction()
  2. {
  3. $entity = new Type();
  4. $form = $this->createCreateForm($entity);
  5.  
  6. return array(
  7. 'entity' => $entity,
  8. 'form' => $form->createView(),
  9. );
  10. }


?

tylko nie wychodzi mi przekazanie danych z Repository class poprzez Kontroler do Twiga.

P.S. Chcę zrobić formularz z listą meczy i dla każdego z tych meczy użytkownik aby mógł podać swój typ. Dlatetgo własnie potrzebuję wyświetlić cześć danych w formularzu edytowalnych (jaki mecz) i nieedytowalnych (puste pole na wpisanie typu)
lukaskolista
http://symfony.com/doc/current/reference/f...t.html#disabled Ja bym zastosował subformy, ale możesz dla poszczególnych pól, jak nie czujesz się na siłach.
damianooo
Prosze o pomoc w zbudowaniu formularza.

Chcialbym to zrobic po Bozemu:
1) newAction - wyswietlam liste meczy
2) createActrion - zapisuje wprowadzone dane z formularza do bazy

Nie wiem niestety jak dane na temat meczy wyswietlic w formularzu do typow (Type):

  1. public function newAction(){
  2. // $repository = $this->getDoctrine()->getRepository('MyTyperkaBundle:Match');
  3. // $matches = $repository->getMatchesPerMatchday(1);
  4. // return array('matches' => $matches);
  5.  
  6. $entity = new Type();
  7. $form = $this->createCreateForm($entity);
  8.  
  9. return array(
  10. 'entity' => $entity,
  11. 'form' => $form->createView(),
  12. );
  13. }
  14.  
  15.  
  16.  
  17. public function createAction(){
  18. $entity = new Type();
  19. $form = $this->createCreateForm($entity);
  20. $form->handleRequest($request);
  21.  
  22. if ($form->isValid()) {
  23. $em = $this->getDoctrine()->getManager();
  24. $em->persist($entity);
  25. $em->flush();
  26.  
  27. return $this->redirect($this->generateUrl('typerka_save_types'));
  28. }
  29.  
  30. return array(
  31. 'entity' => $entity,
  32. 'form' => $form->createView(),
  33. );
  34. }


Klasa Formularza:

  1. class TypeType extends AbstractType
  2. {
  3. /**
  4.   * @param FormBuilderInterface $builder
  5.   * @param array $options
  6.   */
  7. public function buildForm(FormBuilderInterface $builder, array $options)
  8. {
  9. $builder
  10. ->add('hostType')
  11. ->add('guestType')
  12. // ->add('numberOfPoints')
  13. ->add('match')
  14. // ->add('user')
  15.  
  16. ;
  17. }
  18.  
  19. /**
  20.   * @param OptionsResolverInterface $resolver
  21.   */
  22. public function setDefaultOptions(OptionsResolverInterface $resolver)
  23. {
  24. $resolver->setDefaults(array(
  25. 'data_class' => 'My\TyperkaBundle\Entity\Type',
  26. ));
  27. }
  28.  
  29. /**
  30.   * @return string
  31.   */
  32. public function getName()
  33. {
  34. return 'my_typerkabundle_type';
  35. }




Klasa Type:

  1. /**
  2.   * @ORM\ManyToOne(
  3.   * targetEntity = "Match",
  4.   * )
  5.   *
  6.   * @ORM\JoinColumn(
  7.   * name = "match_id",
  8.   * referencedColumnName = "id",
  9.   * onDelete = "SET NULL"
  10.   * )
  11.   */
  12. private $match;
lukaskolista
Twój sposób jak napisałeś na pewno "po Bożemu nie jest". 1 zasób i 1 czynność = 1 akcja. Nie rozbijaj dodawania meczy na 2 akcje. Zrób z tego 1 akcję.

  1. $form = $this->createCreateForm('nazwa lub klasa formularza', $entity);
Tak to powinno wyglądać.
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.