Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF2][Symfony] Rozszerzony Form Type, Select zależny od drugiego selecta.
basso
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 1
Dołączył: 12.12.2010

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


Witam,
już wymiękam... no nie mogę tego nigdzie znaleźć, co chcę zrobić .

Mam formularz w którym są jakieś tam pola i w nim są dwa wyjątkowe: categoria i podkategoria. Są one połączone z innymi dwoma tabelami. Teraz chcę zrobić tak, że jak wybieram najpierw kategorię, to przeładowuje mi się strona (ewentulanie asynchronicznie ajax) i ładuje dla tej wybranej kategorii odpowiedniego selecta z podkategoriami. Chodzi o to, że dane kategorie są w odpowiednich kategoriach i nie mogą wybrać byle jaką podkategorię .

Próbowałem tego: http://symfony.com/doc/current/cookbook/fo...dification.html
Ale nie widzę tutaj możliwości wrzucenia akcji onchage, ani przekazania argumentu do tych listenerów, bo muszę odpowiednie ID przekazać kategorii, by na postawie tego id zaciągnać odpowiednie kategorie.

Czy może ktoś budował taki formularz albo taki mechanizm i mógłby pomóc.


Ogólnie jak wywołuje jakiego kolwiek listenera czy to w formie:
  1. $builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event){
  2. // ... add a choice list of friends of the current application user
  3. });


czy w to formie

  1. $factory = $builder->getFormFactory();
  2.  
  3. $builder->addEventListener(
  4. FormEvents::PRE_SET_DATA,
  5. function(FormEvent $event) use($user, $factory){
  6. $form = $event->getForm();
  7.  
  8. $formOptions = array(
  9. 'class' => 'Acme\DemoBundle\Entity\User',
  10. 'multiple' => false,
  11. 'expanded' => false,
  12. 'property' => 'fullName',
  13. 'query_builder' => function(EntityRepository $er) use ($user) {
  14. // build a custom query, or call a method on your repository (even better!)
  15. },
  16. );
  17.  
  18. // create the field, this is similar the $builder->add()
  19. // field name, field type, data, options
  20. $form->add($factory->createNamed('friend', 'entity', null, $formOptions));
  21. }
  22. );



Zawsze mam komunikat jakby nie działał ten lister jakby go nie było:
  1. FatalErrorException: Error: Class 'Backend\CmsBundle\Form\FormEvents' not found in C:\wamp\www\rw\src\Backend\CmsBundle\Form\PagesType.php line 30
  2.  


Ten post edytował basso 8.05.2013, 14:57:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
basso
post
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 1
Dołączył: 12.12.2010

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


A no to działa działa (IMG:style_emoticons/default/smile.gif) Ja sobie po tablicy mogłem iść... ale w życiu bym na to nie wpadł, że trzeba podawać ścieżkę namespace/bundle i nazwa pola (IMG:style_emoticons/default/smile.gif) Szkoda, że w dokumentacji o tym nie wspominają... tylko -> get () nazwa pola z formularza... myślałem, że ta get się domyśli i wyszuka w tablicy Post moją zmienną. Bynajmniej tak w Zendzie jest. No nic, zatem będę tak to robił (IMG:style_emoticons/default/smile.gif)

Dzięki za pokazanie... ale serio Wy tak ścieżki całe ładujecie by odebrąć 1 pole z formularza?

Crozin a "2. Dane z formularze, które bindujesz przy jego tworzeniu masz dostępne spod $builder->getData()."

1. Nie rozumiem tego troszkę, bo bindowane mam do formularze $request. Czy muszę jeszcze coś przybindować dodatkowo?.
2. W FormType ( u mnie PagesType) jak var_dump($builder->getData()) to wyświetla mi pusty obiekt... no a formularz jest wysłany:

  1. Backend\CmsBundle\Entity\Pages Object ( [id:Backend\CmsBundle\Entity\Pages:private] => [title:Backend\CmsBundle\Entity\Pages:private] => [lead:Backend\CmsBundle\Entity\Pages:private] => [description:Backend\CmsBundle\Entity\Pages:private] => [category:Backend\CmsBundle\Entity\Pages:private] => [subcategory:Backend\CmsBundle\Entity\Pages:private] => [gallery:Backend\CmsBundle\Entity\Pages:private] => Doctrine\Common\Collections\ArrayCollection Object ( [_elements:Doctrine\Common\Collections\ArrayCollection:private] => Array ( ) ) [showDate:Backend\CmsBundle\Entity\Pages:private] => [createdAt:Backend\CmsBundle\Entity\Pages:private] => [slug:Backend\CmsBundle\Entity\Pages:private] => [status:Backend\CmsBundle\Entity\Pages:private] => )


Uczę się powoli, i dzięki za poradę, bo faktycznie mogę robić praktyki których stosować się nie powinno... prośba jeszcze o pomoc z ww.


Crozin mógłbyś mi pomóc , bo ja jak wyświetlam to FormType ( u mnie PagesType) jak var_dump($builder->getData()) to wyświetla mi pusty obiekt... no a formularz jest wysłany (IMG:style_emoticons/default/sad.gif)

I wszystko jasne... błąd Symfonii, czyli się nie da, a ja tydzień się już męczę (IMG:style_emoticons/default/sad.gif) https://github.com/symfony/symfony/issues/6128 ;/

Ten post edytował basso 16.05.2013, 14:01:05
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 19:49