Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]forumlarz w Symfony
mercii
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 1.05.2006

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


Witam
Mam problem z zrealizowaniem takiego założenia:
Chciałbym aby w formularzu domyślnie ładowało mi pewnie zmienne.
Czyli mam formularz:
idWymiana_czesc:
...
....
Samochod_id_vin:
...

I w polach Id aby pobierało mi dane z url?
Tak obecnie wygląda plik:
  1. class BaseWymianaCzesciForm extends BaseFormPropel
  2. {
  3. public function setup()
  4. {
  5. $this->setWidgets(array(
  6. 'idWymiana_czesci' => new sfWidgetFormInputHidden(),
  7. 'Czesci_idCzesci' => new sfWidgetFormPropelChoice(array('model' => 'Czesci', 'add_empty' => false)),
  8. 'Samochod_id_vin' => new sfWidgetFormPropelChoice(array('model' => 'Samochod', 'add_empty' => false)),
  9. 'Zlecenie_id_zlecenia' => new sfWidgetFormPropelChoice(array('model' => 'Zlecenie', 'add_empty' => false)),
  10. 'przebieg' => new sfWidgetFormInput(),
  11. 'cena' => new sfWidgetFormInput(),
  12. ));
  13.  
  14. $this->setValidators(array(
  15. 'idWymiana_czesci' => new sfValidatorPropelChoice(array('model' => 'WymianaCzesci', 'column' => 'idWymiana_czesci', 'required' => false)),
  16. 'Czesci_idCzesci' => new sfValidatorPropelChoice(array('model' => 'Czesci', 'column' => 'idCzesci')),
  17. 'Samochod_id_vin' => new sfValidatorPropelChoice(array('model' => 'Samochod', 'column' => 'id')),
  18. 'Zlecenie_id_zlecenia' => new sfValidatorPropelChoice(array('model' => 'Zlecenie', 'column' => 'id_zlecenia')),
  19. 'przebieg' => new sfValidatorNumber(array('required' => false)),
  20. 'cena' => new sfValidatorNumber(array('required' => false)),
  21. ));
  22.  
  23. $this->widgetSchema->setNameFormat('wymiana_czesci[%s]');
  24.  
  25. $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
  26.  
  27. parent::setup();
  28. }
  29.  
  30. public function getModelName()
  31. {
  32. return 'WymianaCzesci';
  33. }
  34.  
  35.  
  36. }
  37.  


a zmienna która ma być przekazywana to:
  1. $request->getParameter('id_zlecenia')



Go to the top of the page
+Quote Post
Crozin
post
Post #2





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

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


Tworząc nowy formularz pierwszy czy drugi parametr konstruktora to tablica wartości domyślnych - tam możesz przekazać. Możesz również bezpośrednio w metodzie configure formularza.
Go to the top of the page
+Quote Post
Gribo
post
Post #3





Grupa: Zarejestrowani
Postów: 237
Pomógł: 17
Dołączył: 1.11.2007
Skąd: Zielona Góra

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


możesz także użyć setDefault() dla poszczególnych pól formularza. odsyłam do dokumentacji napewno znajdziesz.
Go to the top of the page
+Quote Post
mercii
post
Post #4





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 1.05.2006

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


Dzięki.
Działa mi ta opcja z configure ale nie wiem jak tam przekazać wartość z urla.
URl po wywołaniu formularza wygląda tak:
http://127.0.0.2/frontend_dev.php/wymiana_.../id_zlecenia/11
a configure tak:
  1. public function configure()
  2. {
  3.  
  4. $this->setDefault('Zlecenie_id_zlecenia', $request->getParameter('id_zlecenia'));
  5.  
  6. }

a bląd wygląda tak:
  1. Notice: Undefined variable: request in D:\xampp\htdocs\jobeet\lib\form\base\BaseWymianaCzesciForm.class.php on line 15
  2.  
  3. Fatal error: Call to a member function getParameter() on a non-object in D:\xampp\htdocs\jobeet\lib\form\base\BaseWymianaCzesciForm.class.php on line 15


Ten post edytował mercii 17.01.2010, 15:14:29
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #5





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Myślę, że trochę przeginasz z takim problemem jak pozyskanie parametru, ale niech Ci będzie :/
  1. sfContext::getInstance()->getRequest()->getParameter();
Go to the top of the page
+Quote Post
destroyerr
post
Post #6





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

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


Oczywiście nie jest to dobre rozwiązanie z uzyskiwaniem kontekstu przez metodę getInstance. Zdecydowanie bardziej poprawnym jest ustawienie wartości domyślnej. Metoda setDefault jest publiczna więc możesz z powodzeniem wykorzystać ją w kontrolerze.
Go to the top of the page
+Quote Post
mercii
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 1.05.2006

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


Dziękuje za podpowiedzi. Bardzo mi pomogły.
Jednak pojawił się kolejny problem. Nie chcę zaczynąc nowego tematu więc napisze tutaj.
Znalazłem fajny plugin do wykresów i wszystko jest fajnie jak przekazuje jedna tablicę:
  1. tutaj hest petla foreach
  2. <?php $data[$i]=$zlecenie->getCena();?>
  3. endforeach
  4. ...
  5. stOfc::createChart(750, 325, 'klient/BarChartData?data='.$data, false); ?>

Jednak potrzebuje do :createChart przekazać dwie tablice. Kombinowałem na wszystkie sposoby ale jednak mam spore problemy z przekazywaniem zmiennych....
Rysowanie wykresu umiesciłem w action.class
Go to the top of the page
+Quote Post

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: 23.12.2025 - 09:16