Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF2][Symfony] Formularz - kolekcja - defaultowa wartość
ziolo
post 30.03.2014, 22:22:01
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 20
Dołączył: 17.01.2009
Skąd: Kraków

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


Mam taką sytuację: User i Team. Relacja wiele do wielu. Zrobiona poprzez pośrednią encję Member. Team może zawierac wiele Memberów. User może być wielokrotnie Memberem różnych Teamów.

Chcę dodać nowy Team.

Mam formularz TeamType mający jako kolejcę Member:
  1. public function buildForm(FormBuilderInterface $builder, array $options)
  2. {
  3. $builder
  4. ->add('users', 'collection', array(
  5. 'type' => 'member_form', // - alias dla formularza Member.
  6. ))
  7. ;
  8. }


Formularz Member wyświetlający selecta z userami.
  1. public function buildForm(FormBuilderInterface $builder, array $options)
  2. {
  3. ->add('user', 'entity', array(
  4. 'class' => 'User'
  5. ))
  6. }



I teraz mam kontroler i chcę dodać Team z 4 Memberami. Z tym, że pierwszy domyślnie jest zalogowanym userem.

  1. $user = $this->container->get('security.context')->getToken()->getUser();
  2. $member1 = new Member();
  3. $member2 = new Member();
  4. $member3 = new Member();
  5. $member4 = new Member();
  6. $member1->setUser($user); // pierwszemu ustawiam defaultowego usera.
  7. $team = new Team();
  8. $team->addMember($member1);
  9. $team->addMember($member2);
  10. $team->addMember($member3);
  11. $team->addMember($member4);
  12. $form = $this->createForm(new TeamType(), $team);


I wyświetlam formularz, wszystko gra, lecz niestety w pierwszym selecie nie ma defaultowo aktualnego użytkownika. Nie mam pojęcia czemu :/
Go to the top of the page
+Quote Post
matiit
post 31.03.2014, 12:44:52
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Co Ci zwraca getUser() z Encji member?

  1. $member1->setUser($user); // pierwszemu ustawiam defaultowego usera.
  2. $_us = $menber1->getUser();
  3. var_dump($_us);
Go to the top of the page
+Quote Post
ziolo
post 31.03.2014, 16:05:38
Post #3





Grupa: Zarejestrowani
Postów: 82
Pomógł: 20
Dołączył: 17.01.2009
Skąd: Kraków

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


Dzięki. Wczoraj wieczorem udało mi się jednak rozwiązać problem.

Z kodem z poprzedniego posta oczywiście wszystko było ok.
Natomiast zupełnie nie potrzebnie pozostawiłem modelTransformer Encji do Id w formularzu MemberType.

Najpierw zastosowałem formularz "genemu_jqueryautocompleter_choice" - podtyp "choice" więc zastosowałem transformache encji to id.
Potem użyłem "genemu_jqueryautocompleter_entity" podtyp od "entity" i ten transformer stał się zbędny. Wszystko działało oprócz tego defaultowego ustawiania wartości w formularzu.

  1. $builder->get('user')->addModelTransformer(new EntityToIdTransformer($this->manager , 'AppBundle:User'));


Cały czas szedłem złym tropem, bo myślałem, że jakiejś opcji, ustawienia w typie "collection" mi brakuje :/

Ten post edytował ziolo 31.03.2014, 16:11:18
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 Wersja Lo-Fi Aktualny czas: 26.06.2025 - 20:40