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


(IMG:style_emoticons/default/wstydnis.gif)
Cytat(destroyerr @ 15.09.2009, 19:20:49 ) *
Widzę, że moja sugestia w poprzednim poście nie poskutkowała. W takim razie, jeśli nie chce Ci się uczyć i szukać to Twoja sprawa.
$routePrefix Prefix ścieżki jak już, a jeszcze lepiej to prefix trasy. Route -> Routing, nie miałeś takiego skojarzenia?
Radzę Ci olać form_tag_for bo zbyt dużo tłumaczenia, a sam do tego jak widać nie dojdziesz. Skorzystaj lepiej normalnie z tagu <form>, tylko nie zapomnij go zamknąć!


No to dużo zedytowałeś. Jak obsłużyć formularz? Jest to napisane w dokumentacji. Rusz do niej swoje 4 literki (IMG:style_emoticons/default/winksmiley.jpg)


Ojoj tego sie obawialem to nie tak ze nie chce mi sie uczyc, bo calutki dzien nad tym siedze i kombinuje tylko ze sam chyba nie dam rady dlatego tez zaczalem watek liczylem po prostu na pomoc kogos kto podobne rzeczy juz robil i potrafi jasno wytlumaczyc jak taka walidacje zrobic (co najmniej w przyblizeniu), dostalem same odnosniki na dokumentacje. Co do skojarzenia to wlasnie od razu takie mialem tylko wlasnie na co powinienem ten tag "routowac", przypomne jedno z moich poprzednich pytan "...form_tag_for($form, 'sciezka') no wlasnie co to jest ten drugi argument, do czego to jest sciezka??" (w odpowiedzi link na dokumentacje w ktorej napisano ze drugi argument nazywa sie $routePrefix (IMG:style_emoticons/default/exclamation.gif) SUPER przynajmniej znam poprawna nazwe tego argumentu).
Gdybym byl w stanie dojsc sam nie zamieszczalbym postu, kod ktory zamiescilem jest caly czas rzezbiony (zamknalem <form> niedlugo po napisaniu poprzedniego posta - mimo wszystko dzieki).
O moze tym razem cos wiecej napisali w tej dokumentacji prosze o link na to CO NAPISALI...
I jeszcze raz blagam o cierpliwosc w stosunku do swiezakow, niektorych zeczy nie da sie wytlumaczyc jednym zdaniem...
I jeszcze przez przypadek kliknalem pomogl (IMG:style_emoticons/default/sadsmiley02.gif)
gdyby ktos zdecydowal sie jednak pomoc to modules/action/kontakt/actions/actionsclass.php wyglada juz tak(choc nie mam zielonego pojecia czy w dobra strone zmierzam??):
  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->wpisy_list = WpisyPeer::doSelectNew(new Criteria(), 3);
  11. $this->form = new KontaktForm();
  12. }
  13. public function executeValid(sfWebRequest $request)
  14. {
  15. $this->form = new KontaktForm();
  16. $this->processForm($request, $this->form);
  17. $this->setTemplate('index');
  18. }
  19. protected function processForm(sfWebRequest $request, sfForm $form)
  20. {
  21. $form->bind($request->getParameter($form->getName()));
  22. if($form->isValid())
  23. {
  24. mail(.tu nie wiem jak sie dobrac do tresci.)
  25. }
  26. }
  27. }

w miejsce XXXX w indexsuccess dalem @kontakt_valid (tez nie wiem skad takie cos mi do glowy przyszlo - improwizuje po prostu)

Ten post edytował ceieneka 15.09.2009, 19:07:02
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: 17.10.2025 - 15:57