![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam tabelę w bazie danych:
id PK id_uzytkownika FK samochod Relacja jest z tabelą sf_guard_user - jeden użytkownik może mieć wiele samochodów. Wygenerowałem moduł i przy dodawaniu nowego elementu na stronie w polu 'id uzytkownika' jest lista wszystkich użytkowników do wyboru, bo symfony zrobił mi widget: id_uzytkownika' => new sfWidgetFormDoctrineSelect(array('model' => 'sfGuardUser', 'add_empty' => false)) i walidator: 'id_uzytkownika' => new sfValidatorDoctrineChoice(array('model' => 'sfGuardUser')) a to pole powinno być niewidoczne i powinno w nim być id zalogowanego użytkownika, a nie że użytkownik może sobie wybierać użytkowników z listy. Jak temu zaradzić ? Mam usunąć $this['id_uzytkownika'], po czym utworzyć niewidoczny widget typu input i wpisać do niego id zalogowanego użytkownika wysyłane do formularza z actions.class.php (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję, jednak znalazłem znacznie prostszy sposób - wystarczy użyć $this->form->getObject() czyli np.:
Kod protected function processForm(sfWebRequest $request, sfForm $form) { $form->bind($request->getParameter($form->getName())); if ($form->isValid()) { $this->form->getObject()->setIdUzytkownika( $this->getUser()->getGuardUser()->getId() ); $samochody = $form->save(); $this->redirect('/profil/edit?id='.$samochody['id']); } } (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję, jednak znalazłem znacznie prostszy sposób - wystarczy użyć $this->form->getObject() czyli np.: (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Też tak można, ale ja wolałem to robić w formularzu, żeby mieć spójność - za utworzenie obiektu odpowiedzialny jest formularz. I może on sam utworzyć pełny obiekt. A w Twoim rozwiązaniu obiekt jest częsciowo tworzony przez formularz, a częściowo przez akcję. Jeżeli będziesz chciał użyć tego formularza w innym module, to będziesz musiał duplikować kod. Inna sprawa, że w moim przykładzie uzależniam formularz od klasy użytkownika, co też może nie jest idealnym rozwiązaniem. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 16:54 |