Wprowadzenie do Zend Framework

     Nauka Zend Framework

    appendix

     Przewodnik po Zend Framework


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 21.3% Update 2011-11-16 - Revision 24356 - Version ZF 1.11.x

    73.3. Łańcuchy weryfikatorów

    Często do pewnej wartości potrzebujemy zastosować wiele weryfikatorów w określonej kolejności. Poniższy kod demonstruje sposób rozwiązania przykładu z wprowadzenia, gdzie nazwa użytkownika musi mieć długość między 6 a 12 alfanumerycznych znaków:

    // Tworzymy łańcuch weryfikatorów i dodajemy do niego weryfikatory
    $validatorChain = new Zend_Validate();
    $validatorChain->addValidator(new Zend_Validate_StringLength(612))
                   ->
    addValidator(new Zend_Validate_Alnum());

    // Sprawdzamy nazwę użytkownika
    if ($validatorChain->isValid($username)) {
        
    // nazwa użytkownika jest poprawna
    } else {
        
    // nazwa użytkownika nie jest poprawna; wyświetlamy komunikaty
        
    foreach ($validatorChain->getMessages() as $message) {
            echo 
    "$message\n";
        }
    }

    Weryfikatory są uruchamiane w takiej kolejności, w jakiej zostały dodane do Zend_Validate. W powyższym przykładzie, wpierw jest sprawdzane jest to, czy długość nazwy użytkownika mieści się miedzy 6 a 12 znaków, a następnie sprawdzane jest czy zawiera ona tylko znaki alfanumeryczne. Druga weryfikacja, dla alfanumerycznych znaków, jest przeprowadzana niezależnie od tego, czy pierwsza weryfikacja, dla długości pomiędzy 6 a 12 znaków udała się. Oznacza to, że jeśli nie udadzą się obie weryfikacje, to metoda getMessages() zwróci wiadomości błędów pochodzące od obu weryfikatorów.

    W niektórych przypadkach sensowna może być możliwość przerwania łańcucha weryfikatorów w przypadku, gdy proces weryfikacji nie uda się. Zend_Validate obsługuje takie przypadki za pomocą ustawienia drugiego parametru w metodzie addValidator(). Ustawiając wartość zmiennej $breakChainOnFailure na true, dodany weryfikator przerwie łańcuchowe wywoływanie przy wystąpieniu błędu, co zapobiegnie uruchamianiu innych weryfikacji, które w danej sytuacji zostaną uznane za bezużyteczne. Jeśli powyższy przykład byłby napisany tak jak poniżej, wtedy weryfikacja znaków alfanumerycznych nie byłaby przeprowadzona jeśli długość łańcucha znaków byłaby nieodpowiednia:

    $validatorChain->addValidator(new Zend_Validate_StringLength(612), true)
            ->
    addValidator(new Zend_Validate_Alnum());

    W łańcuchu weryfikatorów może być użyty dowolny obiekt, który implementuje interfejs Zend_Validate_Interface.

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...