Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] formularze - pomóżcie bo zwariuje
barbq
post 31.10.2009, 10:08:26
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 25.10.2009

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


Witam,


Panowie pomóżcie mi bo oszaleje. Na prostej rzeczy wczoraj się zawiesiłem na prawie 8 godzin i do teraz nie ruszyłem z miejsca a czas goni mnie niemiłosiernie...

Załóżmy że mamy dwa moduly: [wydarzenia] i [komentarze]

Wyświetlamy wybrane z listy wydarzenie i chcemy dodać do niego komentarz. Komentarz wymaga id_uzytkownika i id_wydarzenia. Te dwa pola siłą rzeczy nie powinny być widoczne na stronie. W jaki sposób mam je ukryć i przypisać im odpowiednie wartości? Na tą chwilę skorzystałem z funkcji unset(this['id_wydarzenia'], $this['id_uzytkownika']) w funkcji configure() w pliku KomentarzForm.php. W pilku lib\model\doctrine\komentarz.class.php nadpisałem funkcję save(), ale nie mam pojęcia jak przekazać do niej id zalogowanego użytkownika i id komentowanej wiadomości... sad.gif
Go to the top of the page
+Quote Post
Crozin
post 31.10.2009, 10:50:48
Post #2





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

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


1) Dlaczego komentarze do wydarzeń są oddzielnym modułem?
2) id użytkownika rzeczywiście nie powinno być podawane bezpośrednio w formularzu, ale id wydarzenia już jak najbardziej - bo niby dlaczego nie? Przed wykonaniem zapisu danych sprawdzasz czy danych użytkownik może komentować dane wydarzenie (na podstawie jakiś tam kryteriów)
Go to the top of the page
+Quote Post
barbq
post 31.10.2009, 11:10:01
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 25.10.2009

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


A jak wg Kolegi powinno to byc zrobione? Do jednego wydarzenia mozna dodac wiele komentarzy, wiec nie bardzo wyobrazam sobie jak zrobic to inaczej...
Go to the top of the page
+Quote Post
Crozin
post 31.10.2009, 13:17:56
Post #4





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

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


Do formularza przekazujesz obiekt użytkownika (tak by móc odczytać jego ID przy zapisie), a id wydarzenia odczytujesz z adres (jeśli jest jakieś. blablabla?id=123) czy z formularza.
Go to the top of the page
+Quote Post
Gribo
post 31.10.2009, 13:58:23
Post #5





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

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


możesz nadpisać metodę dosave i tam do pól user_id lub wydarzenie_id przypisać wartości pobrane z requesta bądź skąd indziej


--------------------
Wyszukiwarka noclegów w Polsce i zagranicą.
Najlepszy katalog turystyczny wspomagający pozycjonowanie i promocje stron.
Go to the top of the page
+Quote Post
barbq
post 31.10.2009, 14:22:03
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 25.10.2009

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


w tym sęk Panowie, jestem jeszzcze za bardzo newbee na ogólnikowy opis.
Dane z request nie są widoczne zawsze i z każdego miejsca - a tu właśnie się gubię. Nie bardzo rozumiem dlaczego dane z requesta nie są widoczne nawet w akcji - czyżby dlatego że dane przesłane były metodą post?
Go to the top of the page
+Quote Post
Pr0100
post 31.10.2009, 14:24:53
Post #7





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

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


najprościej

Cytat
if ($form->isValid())
{
$form->getObiect()->setEventId( $event->getId() );
$form->getObiect()->setAuthorId( $this->getUser()->getGuardUser()->getId() );
$form->save();
}


Cytat
unset(this['id_wydarzenia'], $this['id_uzytkownika']) w funkcji configure() w pliku KomentarzForm.php


jeżeli użyjesz unset w configure to usuniesz te pola również z backendu

Ten post edytował Pr0100 31.10.2009, 15:52:07


--------------------
Go to the top of the page
+Quote Post
barbq
post 31.10.2009, 14:38:32
Post #8





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 25.10.2009

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


Dzięki za odpowiedź. A w jakiej funkcji to zrobic? w ProcessForm? I jak ukryć te dwa pola aby nie wyświetlały się na formularzu? Wyrenderować każdy element formularza za pomoca metody renderRow() czy inaczej?
Go to the top of the page
+Quote Post
Gribo
post 31.10.2009, 14:49:02
Post #9





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

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


wystarczy że użyjesz w widoku formularza $form['nazwapola'] to wygeneruje ci samo pole jak chcesz wygenerowac pole z labelem i errorem to $form['pole']->render()


--------------------
Wyszukiwarka noclegów w Polsce i zagranicą.
Najlepszy katalog turystyczny wspomagający pozycjonowanie i promocje stron.
Go to the top of the page
+Quote Post
Pr0100
post 31.10.2009, 15:51:00
Post #10





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

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


Cytat
Dzięki za odpowiedź. A w jakiej funkcji to zrobic? w ProcessForm?


w akcji?

Cytat
I jak ukryć te dwa pola aby nie wyświetlały się na formularzu?


unset tylko nie w configure. Dopisz

  1. public function configureFrontend()
  2. {
  3. unset(this['id_wydarzenia'], $this['id_uzytkownika'])
  4. }


a potem w akcji
  1. $form = new MyForm();
  2. $form->configureFrontend();


--------------------
Go to the top of the page
+Quote Post
barbq
post 31.10.2009, 16:10:53
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 25.10.2009

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


Dzięki, zawalczę smile.gif

Tak swoją drogą, to skąd to wiecie takie rzeczy? W dokumentacji tego nie można znaleźć...
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: 29.06.2025 - 21:52