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
Berg
post
Post #2





Grupa: Zarejestrowani
Postów: 180
Pomógł: 37
Dołączył: 1.05.2008
Skąd: Białystok

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


Faktycznie, zapomniałem że postValidator nie uznaje przesłanych zmiennych. To może rzucę kodem jak napisać własny walidator:

  1. public function configure() {
  2.  
  3. $this->getValidatorSchema()->setPostValidator(new sfValidatorCallback(array( 'callback' => array($this, 'checkPassword'))));
  4. }
  5.  
  6. public function checkPassword($validator, $values) {
  7.  
  8. $haslo = md5($values['haslo']); // Pobieram nowe hasło i traktuje je md5
  9. $stare_haslo = $this->getObject()->getHaslo(); // Pobieram stare hasło
  10. if($haslo == $stare_haslo) {
  11. $error = new sfValidatorError($validator, 'Błędne hasło');
  12. throw new sfValidatorErrorSchema($validator, array('haslo' => $error));
  13. }
  14. return $values;
  15. }
  16.  


Cytat(blackroger @ 24.09.2009, 13:50:48 ) *
Odnośnie widgetów potrzebuje tylko zmian w kilku ale nie mogę przecież w klasie dziedziczącej dać setValidators i ustawić powiedzmy dwóch bo będą tylko dwa walidatory, tym bardziej że do każdego mam walidację...


Radziłbym zacząć dokładnie czytać dokumentację Symfony, od tego masz chociażby widgetSchema (IMG:style_emoticons/default/winksmiley.jpg)
  1. $this->widgetSchema['haslo'] = new sfWidgetFormInputPassword();



Ten post edytował Berg 24.09.2009, 13:05:46
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: 24.12.2025 - 01:58