Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Dekoratory formularzy dla errorow w walidacji, poczatkujacy
matchor
post 21.10.2009, 23:28:58
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.05.2005

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


Jestem na etapie rozkminki zend_formsow i walidacji formularzy.

Formularz prosty jak ponizej - waliduje mi standardowe pola wyswietla komunikaty bledow w mojej postaci ale generuje kod html jak ponizej :|

mam 3 pytania

1) ->
czemu renderuje mi tak dziwnie formularz co to jest:
  1. <form method="post" action="" empty="pole nie może być puste" send="zarejestruj" password2="potwierdź hasło" password="hasło" bademailformat="zły format adresu" email="adres e-mail" login="login" enctype="application/x-www-form-urlencoded" id="signup">


2) ->
czy jest mozliwosc zeby w przypadku bledow walidacji dodawalo klase "error" lub podobna do samych elementow formularza - tu inputow - chcialbym moc je wyrozniac np czerwonym kolorem :|

3) ->
w jaki sposob moge walidowac czy pole password i password2 sa takie same ?


ponizej kod php i html

  1. <form method="post" action="" empty="pole nie może być puste" send="zarejestruj" password2="potwierdź hasło" password="hasło" bademailformat="zły format adresu" email="adres e-mail" login="login" enctype="application/x-www-form-urlencoded" id="signup"><div>
  2. <div class="element-group"><label class="required" for="login">login</label> <div class="notice_error">
  3. <input type="text" value="" id="login" name="login"/>
  4. <ul class="errors"><li>pole nie może być puste</li></ul></div></div>
  5. <div class="element-group"><label class="required" for="email">adres e-mail</label> <div class="notice_error">
  6. <input type="text" value="" id="email" name="email"/>
  7. <ul class="errors"><li>pole nie może być puste</li></ul></div></div>
  8. <div class="element-group"><label class="required" for="password">hasło</label> <div class="notice_error">
  9. <input type="password" value="" id="password" name="password"/>
  10. <ul class="errors"><li>pole nie może być puste</li></ul></div></div>
  11. <div class="element-group"><label class="required" for="password2">potwierdź hasło</label> <div class="notice_error">
  12. <input type="password" value="" id="password2" name="password2"/>
  13. <ul class="errors"><li>pole nie może być puste</li></ul></div></div>
  14. <div class="submit-group">
  15. <input type="submit" value="zarejestruj" id="submit" name="submit"/></div></div></form>
  16.  





  1.  
  2. $this->setName('signup');
  3.  
  4. $login = new Zend_Form_Element_Text('login');
  5. $login->setLabel($fieldsName['login'])
  6. ->setRequired(true)
  7. ->addValidator('NotEmpty',false,array('messages'=>"nie puste"));
  8.  
  9. $email = new Zend_Form_Element_Text('email');
  10. $email->setLabel($fieldsName['email'])
  11. ->setRequired(true)
  12. ->addValidator('NotEmpty',true,array('messages'=>"nie puste"))
  13. ->addValidator('EmailAddress',false,array('messages'=>"zly adres"));
  14. $email->addDecorator(array('ErrorsDiv' => 'HtmlTag'), array('tag' => 'div', 'class' => 'notice_error'));
  15.  
  16. $pass = new Zend_Form_Element_Password('password');
  17. $pass->setLabel($fieldsName['password'])
  18. ->setRequired(true)
  19. ->addValidator('NotEmpty',false,array('messages'=>"nie puste"));
  20.  
  21. $pass2 = new Zend_Form_Element_Password('password2');
  22.  
  23. $pass2->setLabel($fieldsName['password2'])
  24. ->setRequired(true)
  25. ->addValidator('NotEmpty',false,array('messages'=>"nie puste"));
  26. $submit = new Zend_Form_Element_Submit('submit');
  27. $submit->setLabel($fieldsName['send']);
  28. $this->addElements(array($login, $email, $pass, $pass2, $submit));
  29. $this->clearDecorators();
  30. $this->addDecorator('FormElements')
  31. ->addDecorator('HtmlTag', array('tag' => '<div>'))
  32. ->addDecorator('Form');
  33. $this->setElementDecorators(array(
  34. array('ViewHelper'),
  35. array('Errors'),
  36. array(array('ErrorsDiv' => 'HtmlTag'), array('tag' => 'div', 'class' => 'notice_error')),
  37. array('Description'),
  38. array('Label', array('separator'=>' ')),
  39. array('HtmlTag', array('tag' => 'div', 'class'=>'element-group')),
  40. ));
  41.  
  42. $submit->setDecorators(array(
  43. array('ViewHelper'),
  44. array('Description'),
  45. array('HtmlTag', array('tag' => 'div', 'class'=>'submit-group')),
  46. ));
  47.  

Go to the top of the page
+Quote Post
seth-kk
post 22.10.2009, 10:42:12
Post #2





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


Ad1. Na oko zle dodane tlumaczenia bledow (config?)
Ad2-3. Skoro dziedziczysz po Zend_Form to przykryj metode isValid() wlasna ktora bedzie robila co potrzebujesz


--------------------
Go to the top of the page
+Quote Post
matchor
post 28.10.2009, 23:31:19
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.05.2005

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


w jaki sposob moge przykryc ta funkcje - bardzo prosze o jakis prosty przyklad :/ kombinuje i nie wychodzi mi. Nie chce pisac swoich wlasnych metod chce jak najbardziej wykorzystac to co w sobie ma zend :. z gory dzieki
Go to the top of the page
+Quote Post
marcio
post 29.10.2009, 00:14:50
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Nie wiem jak wyglada Zend_form() ale mozesz to robic na 2 sposoby:

  1.  
  2. class twojaklasa extends Zend_form {
  3.  
  4. public function NazwaFunckjiZzendaZerrorem() {
  5.  
  6. //nowa deklaracja funkcji
  7.  
  8.  
  9. }
  10.  
  11. }
  12.  


Lub gdy funckja ktora cie interesuje zwraca string z error'em robisz:

  1.  
  2. class twojaklasa extends Zend_form {
  3.  
  4.   public function twojafunckja() {
  5.  
  6.       $error = parent::funckja_z_zenda_ktora_zwraca_error
  7.  
  8.       //dekorujesz blad jak chcesz
  9.  
  10.       return '<p style="color:#ff0000;">'.$error.'</p>'; 
  11.  
  12.   }
  13.  
  14. }
  15.  


Ten post edytował marcio 29.10.2009, 00:15:58


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
matchor
post 29.10.2009, 12:31:26
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.05.2005

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


a tak bardziej pod zenda ? napisac wlasna metode rysujaca formularze, czy je walidujaca, albo wyswietlajaca inaczej umiem. Ale zalezy mi na tym zeby nauczyc sie zenda a nie chce zmieniac tego co jest. Nadpisanie metody isValid spoko - tylko ze isValid jest w n miejscach raz dot formularzy raz elementow raz czegos innego nadpisanie 10 metod 10 roznych klas to troche nieporozumienie jak dla mnie :|
Go to the top of the page
+Quote Post
seth-kk
post 29.10.2009, 16:17:01
Post #6





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


Cytat(matchor @ 29.10.2009, 13:31:26 ) *
...nadpisanie 10 metod 10 roznych klas to troche nieporozumienie jak dla mnie :|

poniewaz nie znasz podstaw uzywania obiektowosci
skoro i tak dziedziczysz po Zend_Form tworzac formularz to co stoi na przeszkodzie przykrycia/nadpisania metody isValid() wlasna w ktorej odwolujesz sie do orginalu a nastepnie wykonujesz wlasne akcje
o obiektowosci w php mozesz poczytac tu


--------------------
Go to the top of the page
+Quote Post
matchor
post 29.10.2009, 21:28:53
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.05.2005

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


Po prostu chce sie nauczyc :|
Go to the top of the page
+Quote Post
marcio
post 29.10.2009, 23:53:27
Post #8





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat(marcio @ 29.10.2009, 00:14:50 ) *
Nie wiem jak wyglada Zend_form() ale mozesz to robic na 2 sposoby:

[PHP] pobierz, plaintext
  1. class twojaklasa extends Zend_form {
  2. public function NazwaFunckjiZzendaZerrorem() {
  3. //nowa deklaracja funkcji
  4. }
  5. }
[PHP] pobierz, plaintext

Lub gdy funckja ktora cie interesuje zwraca string z error'em robisz:

[PHP] pobierz, plaintext
  1. class twojaklasa extends Zend_form {
  2. public function twojafunckja() {
  3. $error = parent::funckja_z_zenda_ktora_zwraca_error
  4. //dekorujesz blad jak chcesz
  5. return '<p style="color:#ff0000;">'.$error.'</p>';
  6. }
  7. }
[PHP] pobierz, plaintext



Cytat(seth-kk @ 29.10.2009, 16:17:01 ) *
poniewaz nie znasz podstaw uzywania obiektowosci
skoro i tak dziedziczysz po Zend_Form tworzac formularz to co stoi na przeszkodzie przykrycia/nadpisania metody isValid() wlasna w ktorej odwolujesz sie do orginalu a nastepnie wykonujesz wlasne akcje
o obiektowosci w php mozesz poczytac tu

Chcesz sie nauczyc a nawet nie zastosujesz metod wyzej opisanych, nie wspominajac o tym ze jak nie znasz choc troche oop bedzie trudno i niepotrzebnie rzucasz sie na gleboka wode


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
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: 19.06.2025 - 23:43