Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony2][Symfony]Walidacja danych
Szymciosek
post
Post #1





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Witam,
szukam jak zrobić walidację danych w symfony, ale wszystko kieruje mnie albo do korzystania z czegoś takiego: http://symfony.com/doc/2.0/book/validation.html
albo do tworzenia http://symfony.com/doc/2.0/reference/const.../MinLength.html

a moje pytanie:
jak zrobić prostą walidację powiedzmy pobranej nazwy użytkownika z formularza?
Formularz mam na "czysto" w html.

  1. <form action="{{ path('cms_login') }}" method="post">
  2. <input type="text" placeholder="Nazwa użytkownika" name="username" value="admin" />
  3. <input type="text" placeholder="Hasło" name="password" value="admin" />
  4. <div id="remember-me"><label for="remember-me">Zapamiętaj mnie</label><input type="checkbox" name="remember-me" checked /></div>
  5. <input type="submit" name="login_submit" value="Zaloguj" />
  6. <a href="#zapomnialem" id="forgot-password">Zapomniałem hasła</a>
  7. </form>


no i wcześniej jak robiłem w czystym php to zrobiłem walidację na podstawie:
  1. public function validateUsername($username)
  2. {
  3. if (preg_match("/^[a-zA-Z]{4,18}+$/", $username))
  4. return true;
  5. }


z tym, że to była moja klasa, którą mogłem sobie wykorzystać wszędzie tam, gdzie chciałem. Tutaj też teoretycznie mógłbym to zrobić, ale symfony2 chyba ma jakieś gotowe walidatory.
Tylko jak ich użyć na podanym przykładzie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Dlaczego nie korzystasz z wbudowanego z Symfony generatora formularzy? Ułatwiłoby Ci to życie, gdyż nie musiał byś robić wszystkiego ręcznie.
2. Utwórz sobie obiekt reprezentujący dane z formularza, dodaj do niego odpowiednie reguły walidacji (np. za pomocą adnotacji), a następnie sprawdź jego poprawność:
  1. class LoginModel {\
  2. /** @Assert\NotBlank @Assert\MinLength(4) @Assert\MaxLength(18) @Assert\Regexp("[a-Z]+") */
  3. public $username;
  4.  
  5. ...
  6. public $password;
  7.  
  8. /** @Assert\Type("boolean") */
  9. public $rememberMe;
  10. }
  1. // Gdzieś tam po wysłaniu formularza wypełnij powyższy obiekt danymi po czym:
  2. $login = new LoginModel();
  3. ...
  4.  
  5. $errors = $this->get('validator')->validate($login);


Ale jak już napisałem - skorzystanie z frameworka od osbługi formularzy łatwiłoby Ci znacznie życie.

EDIT: Poprawiony błąd z nazwą.

Ten post edytował Crozin 10.05.2013, 23:38:29
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: 15.10.2025 - 02:44