Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Jeden z dwóch walidatorów
Forum PHP.pl > Forum > PHP > Frameworki
IceManSpy
Witam

Zastanawiam się jak rozwiązać mój problem. Do logowania się do systemu chcę użyć jako login albo adres e-mail albo jakiś numer (5 cyfr). Czy jest jakaś możliwość użycia wbudowanego walidatora z opcją OR czy trzeba pisać swój własny?
bastard13
Wydaje mi się, że nie ma czegoś takiego jak OR na walidatorach (mogę się mylić, bo zend jest całkiem sporym frameworkiem:)
Zawsze możesz stworzyć swój walidator. Coś w stylu:
  1. Zend_Validate_Contaner_Or extends Zend_Validate_Abstract {
  2. private $validators=array();
  3. public function __construct(array $validators)
  4. {
  5. //sprawdzenie czy każdy element tablicy implementuje Zend_Validate_Interface
  6. $this->validators = $validators;
  7. }
  8. public function isValid($value)
  9. {
  10. foreach($this->validators as $validator)
  11. $validator->isValid($value) ? return true : continue;
  12. return false;
  13. }
  14. }

W konstruktorze przekazujesz jakie walidatory mają być i po sprawie:)
KrzysiekWildfire
Zawsze możesz nadpisać funkcję isValid():

  1. public function isValid($data){
  2. //1. Sprawdzasz, czy w polu loginu jest mail przy pomocy validatora
  3. //2. Sprawdzasz, czy w polu loginu jest login
  4. //3. Jeżeli nie to wstawiasz error w element.
  5. parent::isValid($data);
  6. }


Powinno działać - jeżeli tak to wróć z informacją, bo sam jestem ciekawy.
melkorm
Zawsze może napisać swój walidator i skorzystać z drugiego parametru valid czyli $context
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.