Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony]Walidacja formularza
ceieneka
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 6.08.2009

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


Witam
Uczę się Symfony robiąc portal który wcześniej zrobiłem bez frameworka, i mam problem przy walidacji formularza. Googluje caly dzien probuje coraz nowszych (glupszych) rozwiazan i ciagle nic. Chociaz pomoc dotyczaca walidacji formularzy jest obszerna to jednak tam jest mowa o formularzach stworzonych na podstawie modelu przez propela lub doctrine. Czy moglby mi ktos pomoc w walidacji prostego formularza kontaktowego sa w nim pola:

imię i nazwisko - poprzednio walidowalem tak
  1. if(!eregi("(^[a-ząćęłńóśźż]{3,} [a-ząćęłńóśźż]{2,}$)|(^[a-ząćęłńóśźż]{3,} [a-ząćęłńóśźż]{2,}-[a-ząćęłńóśźż]{2,}$)",$imie))
  2. {
  3. $errors[0]="Imię i nazwisko - pole składa się z dwóch członów oddzielonych spacją:<br/> -imię: dozwolone są wyłącznie litery, musi składać się co najmniej z trzech liter<br/> -nazwisko: dozwolone są wyłącznie litery,w przypadku nazwisk dwóczłonowych łącznikiem jest znak '-', człon musi składać się z conajmniej dwóch znaków.<br/><br/>";
  4. $prawidlowo=false;
  5. }


adres e-mail -
  1. if(!eregi("^[0-9a-ząćęłńóśźż_.-]+@[0-9a-ząćęłńóśźż\.]{2,}.[a-z]{2,3}$",$mail))
  2. {
  3. $errors[1]]="Adres email.<br/><br/>";
  4. $prawidlowo=false;
  5. }


wiadomość -
  1. if(strlen($wiadomosc)>1000)
  2. {
  3. $errors[2]="Wiadomość - maksymalnie może zawierać 1000 znaków.<br/><br/>";
  4. $prawidlowo=false;
  5. }


Niby prosty formularz (IMG:style_emoticons/default/sciana.gif)
Formularz wystepuje w module kontakt, w katalogu lib/form stworzylem plik KontaktForm.class.php (bo chyba powinienem co nie?(IMG:style_emoticons/default/questionmark.gif) ) ktory wyglada tak:
  1. class KontaktForm extends sfForm
  2. {
  3. public function configure()
  4. {
  5. $this->setWidgets(array('mail' => new sfWidgetFormInput(),'wiadomosc' => new sfWidgetFormTextarea(),'nazwa' => new sfWidgetFormInput(),'company' => new sfWidgetFormInput()));
  6. $this->setValidators(array('mail' => new sfValidatorEmail(),'wiadomosc' => new sfValidatorString(array('max_length' => 1500,'required' => true)),'nazwa'));
  7. }
  8. }

Ale nie wiem jak dodac warunki z ifow do validatora. Nie brechtajcie sie jesli to glupoty, bo w ogole nie jarze tych formularzy (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ceieneka
post
Post #2





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 6.08.2009

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


  1. $this->setValidators(array(
  2. 'mail' => new sfValidatorEmail(),
  3. 'wiadomosc' => new sfValidatorString(array('max_length' => 1500,'required' => true)),
  4. 'imie_nazwisko' =>new sfValidatorRegex("(^[a-ząćęłńóśźż]{3,} [a-ząćęłńóśźż]{2,}$)|(^[a-ząćęłńóśźż]{3,} [a-ząćęłńóśźż]{2,}-[a-ząćęłńóśźż]{2,}$)")));


Czy w ten sposób napisałem własne walidatory??

No i jeszcze jedno pytanie mam, moj formularz wyglada tak:

  1. <form action="kontakt" method="post">
  2. <dl>
  3. <dt>Imię i Nazwisko:</dt>
  4. <dd><input type="text" name="nazwa" size="50" /></dd>
  5. <dt>E-mail:</dt>
  6. <dd> <input type="text" name="mail" size="50" /></dd>
  7. <dt>Firma:</dt>
  8. <dd><input type="text" name="company" size="50" /></dd>
  9. <!--<dt>Telefon:</dt>
  10. <dd><input type="text" name="phone" size="40" /></dd>-->
  11. <dt>Wiadomość:</dt>
  12. <dd><textarea name="wiadomosc" rows="6" cols="60" title="wiadomosc" ></textarea></dd>
  13.  
  14. <dt><input type="submit" value="Wyślij" class="buttonik" />
  15. <input type="reset" value="Wyczyść" class="buttonik" /></dt>
  16. <dd></dd>
  17. </dl>
  18. </form>


No i z tego co zrozumialem to w symfony znaczniki form itd. tworzy sie za pomoca widgetow, no i czy w taki sposob piszac tylko:

  1. $this->setWidgets(array('mail' => new sfWidgetFormInput(),'wiadomosc' => new sfWidgetFormTextarea(),'nazwa' => new sfWidgetFormInput(),'company' => new sfWidgetFormInput()));


nie pozbywam sie stylow??
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: 12.10.2025 - 23:52