Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony]Zamiast listy użytkowników w polu powinno być id zalogowanego uzytkownika
nieraczek
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nieraczek
post
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)
Go to the top of the page
+Quote Post
michalg
post
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

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


Cytat(nieraczek @ 14.04.2009, 20:13:11 ) *
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.
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: 15.10.2025 - 16:54