Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]forms
Lonas
post 13.05.2009, 10:04:49
Post #1





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Jak mogę utworzyc 2 formularze na podstawie jednego modelu, ale tak zeby te formularze mialy inne nazwy.

  1. <?php
  2. $this->form = new CategoryTreeForm();
  3. $this->form2 = new CategoryTreeForm();
  4. ?>


zeby w wyniku dostac
  1. <input id="category_tree1_name" type="text" name="category_tree1[name]"/>
  2. <input id="category_tree2_name" type="text" name="category_tree2[name]"/>


--------------------
Go to the top of the page
+Quote Post
Crozin
post 13.05.2009, 10:22:33
Post #2





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

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


Dodaj do tego formularza konstrutkor, który będzie przyjmował jeden parametr (nazwę). Następnie w metodzie configure() przy pomocy
  1. <?php
  2. $this->widgetSchema->setCOS_TAM('nazwa_elementu', 'wartosc');
  3. ?>
powinieneś móc to ustawić.
Go to the top of the page
+Quote Post
Lonas
post 13.05.2009, 10:41:40
Post #3





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Tutaj tworzone są nazwy pól z formularza

  1. <?php
  2. $this->widgetSchema->setNameFormat('category_lang[%s]');
  3. ?>


Tylko nie za bardzo wiem jak to zrobic w kontrolerze tworze sobie dynamicznie forumlarz w zaleznosci od tego ile jest jezykow w bazie:

  1. <?php
  2. $c = new Criteria();
  3.    $c -> add(LanguagesPeer::ID,1,Criteria::NOT_EQUAL);  //wszystkie poza 1 jezykiem czyli pl
  4.    $this->langs =  LanguagesPeer::doSelect($c);
  5.    
  6.    
  7.    
  8.    if(COUNT($this->langs) > 0 ){
  9.      foreach($this->langs as $lang){
  10.        $form = "form".$lang -> getName();
  11.        $this->$form = new CategoryLangForm();
  12.      }
  13. ?>


--------------------
Go to the top of the page
+Quote Post
osl
post 13.05.2009, 10:45:43
Post #4





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


Przecież Crozin Ci napisał smile.gif
w konstruktorze formularza dodajesz parametr, powiedzmy $version i potem robisz tak:
  1. <?php
  2. $this->widgetSchema->setNameFormat('category_lang'.$version,'[%s]');
  3. ?>


a w kontrolerze:
  1. <?php
  2. if(COUNT($this->langs) > 0 ){
  3.     $version=0;
  4.     foreach($this->langs as $lang){
  5.       $form = "form".$lang -> getName();
  6.       $this->$form = new CategoryLangForm($version);
  7.       $version++;
  8.     }
  9. ?>
Go to the top of the page
+Quote Post
Lonas
post 13.05.2009, 10:54:24
Post #5





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Teraz rozumiem smile.gif dzieki

EDIT : ale to tak napewno działa ? bo tworzac formularz

  1. <?php
  2. $this->$form = new CategoryLangForm($version);
  3. ?>


gdzie $version jest np 1 to on chce utworzyc formularz tak jakby z danymi do edycji o id 1

Ten post edytował Lonas 13.05.2009, 11:14:27


--------------------
Go to the top of the page
+Quote Post
destroyerr
post 13.05.2009, 13:20:00
Post #6





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Eee... a nadpisałeś konstruktor? Jeśli tak to jak?
A w akcji też możesz to przecierz zrobić:
  1. <?php
  2. $this->form->getWidgetSchema()->setNameFormat('category_lang'.$version,'[%s]');
  3. ?>
Go to the top of the page
+Quote Post
Lonas
post 15.05.2009, 08:51:09
Post #7





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


W klasie BaseCategoryLangForm dodałem


  1. <?php
  2. $this->widgetSchema->setNameFormat('category_lang'.$version,'[%s]');
  3. ?>


a w kontrolerze chcialem tworzyc formularz z parameterm $version

destroyerr: ale działa tak jak napisałeś przy ustawieniu tego w akcji.


EDIT:
A jak moge zrobic cos takiego :

Tworze sobie formularze w petli :
  1. <?php
  2.      foreach($this->langs as $lang){
  3.        $this->forms[$lang -> getName()]= new CategoryLangForm();
  4.        $this->forms[$lang -> getName()]->getWidgetSchema()->setNameFormat('category_lang_'.$lang -> getName().'[%s]');
  5.      }
  6. ?>


ale nie moge odebrac danych z tego formularza a robie to tak :

  1. <?php
  2. foreach($this->langs as $lang)
  3.      {
  4. $form1 = new CategoryLangForm();
  5.        $form1 ->getWidgetSchema()->setNameFormat('category_lang_'.$lang -> getName().'[%s]');
  6.        $form1 ->bind($request->getParameter('category_lang_'.$lang -> getName()), $request->getFiles('category_lang_'.$lang -> getName()));
  7.  
  8.         print_r($form1 ->getValues());
  9.      
  10.      }
  11. ?>


dostaje puste tablice bez pol z formularza

dodam że to :

  1. <?php
  2. print_r($request->getParameter('category_lang_'.$lang -> getName()));
  3. ?>


zwraca mi tablice

  1. Array ( [name] => ang [description] => ang [tags] => ang ) Array ( [name] => de [description] => de [tags] => de )


wszystkie dane przekazywane w POST

  1. Array
  2. (
  3. [category_tree] => Array
  4. (
  5. [id] =>
  6. [category_id] => 1
  7. [type_id] => 1
  8. [name] => pl
  9. [description] => sdfsdf
  10. [tags] => sdsd
  11. )
  12.  
  13. [category_lang_english] => Array
  14. (
  15. [id] =>
  16. [lang_id] => 2
  17. [category_id] =>
  18. [name] => ang
  19. [description] => ang
  20. [tags] => ang
  21. [is_visible] => on
  22. )
  23.  
  24. [category_lang_german] => Array
  25. (
  26. [id] =>
  27. [lang_id] => 3
  28. [category_id] =>
  29. [name] => d
  30. [description] => ded
  31. [tags] =>
  32. )
  33.  
  34. )


formularz category_tree jest dobrze bind-owany a 2 pozostale nie chca :/

Ten post edytował Lonas 15.05.2009, 12:57:35


--------------------
Go to the top of the page
+Quote Post
Crozin
post 15.05.2009, 14:05:25
Post #8





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

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


Łatwiej powinno być Ci operować na tym, gdyby pola formularza miały format:
category_lang[english][nazwa_pola]
Go to the top of the page
+Quote Post
Lonas
post 15.05.2009, 14:11:42
Post #9





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Próbowałem tak ale bind nie dziala - nie moge powiązać danych z formularza z formularzem


--------------------
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: 19.07.2025 - 16:24