Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] Form
Daniel_K
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 25.11.2010

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


Witam,

Zrobiłem formularz i wszystko fajnie działa, ale chciałbym aby dane wysłane z formularza były przypisane w bazie konkretnemu użytkownikowi. Dlatego pomyślałem że id użytkownika będzie pobierane ze zmiennej sesyjnej... no ale mam problem z pobieraniem zmiennej sesyjnej w setWidgests? A może powinienem inaczej do tego podejść?
Proszę o pomoc!
Dziękuje.
Go to the top of the page
+Quote Post
pepe77
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 13.05.2010

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


Nie do końca wiem, czy dobrze Cię zrozumiałem, ale jeżeli chodzi o to, aby w rekordzie wypełnić pole created_by (analogicznie do created_at),
to najlepiej to zrobić w odpowiedniej metodzie executeCreate:
  1. $user = $this->getUser();
  2. ...
  3. $entity->setCreatedBy( $user );
  4. ...
  5. $entity->save();


oczywiście, w definicji encji Entity, musisz mieć pole created_by.

Hope this helps...

Ten post edytował pepe77 6.06.2011, 09:19:47
Go to the top of the page
+Quote Post
janek9
post
Post #3





Grupa: Zarejestrowani
Postów: 121
Pomógł: 2
Dołączył: 22.03.2009

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


Cytat(Daniel_K @ 5.06.2011, 23:24:36 ) *
Witam,

Zrobiłem formularz i wszystko fajnie działa, ale chciałbym aby dane wysłane z formularza były przypisane w bazie konkretnemu użytkownikowi. Dlatego pomyślałem że id użytkownika będzie pobierane ze zmiennej sesyjnej... no ale mam problem z pobieraniem zmiennej sesyjnej w setWidgests? A może powinienem inaczej do tego podejść?
Proszę o pomoc!
Dziękuje.


Również nie zabardzo wiem co chcesz zrobić. Po pierwsze czy chodzi Tobie o to, że wyciąga id aktualnie zalogowanego użytkownika i zapisuje je w bazie z tym formularzem ? Jeżeli tak to skorzystaj z pluginu guarda. Jeżeli nie, napisz Nam konkretnie co chcesz zrobić.
Go to the top of the page
+Quote Post
frani0
post
Post #4





Grupa: Zarejestrowani
Postów: 43
Pomógł: 5
Dołączył: 9.03.2011

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


Kolego najłatwiej to zrobisz chowając wybór użytkownika i dając setDefault

Plik akcji:
  1. public function executeNew(sfWebRequest $request)
  2. {
  3. $this->form = new articleForm();
  4. $this->form->setDefault('id_user', $request->getParameter('id'));
  5. }


Definicja formularza:
  1. class articleForm extends BasearticleForm
  2. {
  3. public function configure()
  4. {
  5. $this->widgetSchema['id_user'] = new sfWidgetFormInputHidden();
  6. ...
  7.  
  8. }
  9. }


No i plik bazy danych schema.yml
  1. article:
  2. columns:
  3. id:
  4. type: integer(4)
  5. primary: true
  6. autoincrement: true
  7. id_user: integer(4)
  8. name:
  9. type: string(255)
  10. notnull: true
  11. length: { min: 4 }
  12. text:
  13. type: string
  14. notnull: true
  15. relations:
  16. user:
  17. local: id_user
  18. foreign: id
  19. foreignType: one


Przy takich ustawieniach wpisujesz setDefault i już masz, jakby coś pytaj. Używam takiego mechanizmu tylko jak w przykładzie puki co pobieram z pasku adresu (IMG:style_emoticons/default/wink.gif)

Ten post edytował frani0 6.06.2011, 09:41:17
Go to the top of the page
+Quote Post
destroyerr
post
Post #5





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

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


@frani0 uważasz, że taki sposób jest bezpieczny?
Go to the top of the page
+Quote Post
janek9
post
Post #6





Grupa: Zarejestrowani
Postów: 121
Pomógł: 2
Dołączył: 22.03.2009

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


@frani0 - sciagnij sobie do Firefoxa dodatek Web Developer, nastepnie formularze i informacje o formularzu. Adres Id podany jak na tacy, w dodatku za pomoca firebuga mozna zmienic wartosc ukrytego pola...

Ten post edytował janek9 6.06.2011, 17:05:52
Go to the top of the page
+Quote Post
Daniel_K
post
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 25.11.2010

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


frani0 właśnie o coś takiego mi chodziło - dzięki wielkie, działa... Chłopaki a istnieje jakaś bezpieczniejsza opcja?

Chodziło mi o to że jest kilku użytkowników z których każdy może zapisać sobie jakąś własną notkę za pomocą formularza... No i w istocie pytałem jak odpowiednio zdefiniować setWigets'a żeby mi nie wyświetlał pola wyboru z id użytkownika, a w zamian pobierał id ze zmiennej sesyjnej.

Ten post edytował Daniel_K 6.06.2011, 17:56:01
Go to the top of the page
+Quote Post
toffiak
post
Post #8





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


Możesz przypisać autora do notatki po przesłaniu formularza i po jego walidacji a samo pole z id autora notatki po prostu usunąć.
Go to the top of the page
+Quote Post
jaro87
post
Post #9





Grupa: Zarejestrowani
Postów: 53
Pomógł: 7
Dołączył: 10.03.2011
Skąd: Wrocław

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


Cytat(Daniel_K @ 6.06.2011, 18:50:11 ) *
Chłopaki a istnieje jakaś bezpieczniejsza opcja?

No choćby przed bindowaniem formularza ustawiasz id użytkownika z sesji, tak jak chciałeś na początku.
  1. $parameters = $request->getParameters($form->getName());
  2. $parameters['id'] = $this->getUser()->getAttribute('id');
  3. $form->bind($parameters);
  4. if($form->isValid()){
  5. $form->save()
  6. }

Go to the top of the page
+Quote Post
Daniel_K
post
Post #10





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 25.11.2010

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


Świetnie działa (IMG:style_emoticons/default/smile.gif) Dziękuje
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: 20.09.2025 - 06:15