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%)
-----


Cytat(destroyerr @ 15.09.2009, 17:29:03 ) *
Nie wiem skąd wziąłeś, że tam jest ścieżka. Gdybyś zajrzał do dokumentacji, to znalazłbyś to.


No Właśnie tam jest $routePrefix, route to chyba ścieżka z angielskiego, qrcze nadal stoje z ta walidacja moze zamieszcze kod ktory do tej pory wymeczylem:

W katalogu glownym projektu w folderze lib/form stworzylem nastepujacy plik KontaktForm.class.php

  1. <?php
  2. class KontaktForm extends sfForm
  3. {
  4. public function configure()
  5. {
  6. $this->setWidgets(array('mail' => new sfWidgetFormInput(),'wiadomosc' => new sfWidgetFormTextarea(),'nazwa' => new sfWidgetFormInput(),'company' => new sfWidgetFormInput()));
  7. $this->setValidators(array('mail' => new sfValidatorEmail(),'wiadomosc' => new sfValidatorString(array('max_length' => 1500,'required' => true)),'nazwa' =>'imie_nazwisko' =>new sfValidatorRegex("(^[a-ząćęłńóśźż]{3,} [a-ząćęłńóśźż]{2,}$)|(^[a-ząćęłńóśźż]{3,} [a-ząćęłńóśźż]{2,}-[a-ząćęłńóśźż]{2,}$)")));
  8. }
  9. }


apps/frontend/modules/kontakt/templates pliczek indexSuccess.php wyedytowalem do nastepujacej postaci
  1. <div id="content">
  2. <div class="container">
  3. <div id="oferta_tresc">
  4.  
  5. <h2>Kontakt</h2>
  6. <p>
  7. Prosimy skorzystać z formularza kontaktowego
  8. </p>
  9. <br />
  10. <?php echo form_tag_for($form, 'XXXX')?>
  11. <table>
  12. <tfoot>
  13. <tr>
  14. <td colspan="2">
  15. <input type="submit" value="Wyślij"/>
  16. </td>
  17. </tr>
  18. </tfoot>
  19. <tbody>
  20. <?php echo $form ?>
  21. </tbody>
  22. </table>
  23. </div>
  24.  
  25. <div class="czysc"></div>
  26. </div>
  27. </div>

Tu jest ten nieszczesny form_tag_for($form, 'XXXX') gdzie nie wiem co wplesc zamiast XXXX

natomiast apps/frontend/modules/kontakt/actions/actions.class.php wyedytowalem tak:
  1. class kontaktActions extends sfActions
  2. {
  3. /**
  4.   * Executes index action
  5.   *
  6.   * @param sfRequest $request A request object
  7.   */
  8. public function executeIndex(sfWebRequest $request)
  9. {
  10. $this->form = new KontaktForm();
  11. }
  12. }


Po zatwierdzeniu wiadomosci i walidacji wiadomosc powinna zostac wyslana powiedzmy funkcja mail().
Sa jakies pomysly?? (IMG:style_emoticons/default/sciana.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 8.10.2025 - 01:48