Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] pobranie wartości pola w formularzu
blackroger
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 8.11.2008

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


Dzień dobry. Jak pobrać wartość pola w formularzu.
Kod formularza:
  1.  
  2. class ChangeUserDataForm extends BaseUzytkownicyForm {
  3.  
  4. public function configure() {
  5. $this->setWidgets(array('usid'=>new sfWidgetFormInputHidden(),
  6. 'login'=>new sfWidgetFormInput(),
  7. 'stare_haslo'=>new sfWidgetFormInputPassword(),
  8. 'nowe_haslo'=>new sfWidgetFormInputPassword(),
  9. 'nowe_powtorz'=>new sfWidgetFormInputPassword(),
  10. 'imie'=>new sfWidgetFormInput(),
  11. 'nazwisko'=>new sfWidgetFormInput(),
  12. 'miasto'=>new sfWidgetFormInput(),
  13. 'mail'=>new sfWidgetFormInput(),
  14. 'osobie'=> new sfWidgetFormTextarea()
  15. ));
  16.  
  17. $this->widgetSchema->setNameFormat('change_user[%s]');
  18. ....
  19. .
  20. .
  21. .
  22. .
  23. $sqlo = new Criteria();//tworzymy obiekt do zapytania
  24. $sqlo->add(UzytkownicyPeer::LOGIN, 'xxxxxxxxxxxxxxx-co ja mam tu wpisać');
  25. $uzytkr = UzytkownicyPeer::doSelectOne($sqlo);//szukamy wpisu w uzytkownicy
  26. $zmienna_ze_starym_hasłem = $uzytkr->getHaslo();
  27.  
  28. $this->validatorSchema->setPostValidator(
  29.  
  30. new sfValidatorSchemaCompare(
  31. $zmienna_ze_starym_hasłem, sfValidatorSchemaCompare::EQUAL, 'stare_haslo',
  32. array(),
  33. array('invalid'=>'Błędne hasło!'))
  34.  
  35. );


potrzebuje tej wartości, bo chcę wyciągnąć hasło i władować je do walidatora compare. Jest wogóle taka możliwość w formularzu? Wiem że można to przenieść do akcji i porównać ale chciałbym spróbować tak jeżeli się da...

Ten post edytował blackroger 24.09.2009, 12:07:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
destroyerr
post
Post #2





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

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


Zacznijmy od tego, że sfValidatorSchemaCompare nie przyjmuje wartości, a nazwy pól formularza. Poza tym chcesz porównywać hasło z bazy z tym wpisanym przez użytkownika? Chcesz powiedzieć, że hasła przechowujesz w czystej postaci? Zmień to jak najszybciej.
Jako postValidator zastosowałbym albo własny walidator, albo callback. Oczywiście nie musi to być postValidator, może być po prostu walidator na polu stare_haslo

Jeśli chcesz pobrać login użytkownika, w formularzu, to wystarczy przecież:
  1. $this->getObject()->getLogin();


Pytanie mam jeszcze dlaczego na nowo ustawiasz wszystkie widżety. Na pewno jest to konieczne?
Jeszcze porada odnośnie pobierania danych w różnych miejscach (czy to w akcji, czy to w formularzu), korzystaj raczej z klas *Peer i to w nich twórz zapytania i zwracaj gotowe dane. Unikaj tworzenie obiektu Criteria poza modelem.
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: 5.10.2025 - 18:45