Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel

Pri programovaní v Zend Frameworku prídete do stavu kedy budete potrebovať vytvoriť vlastný validátor na overenie určitých údajov, môžu to byť emeilové adresy, veľkosti súborov, správne obsahy nejakých políčok alebo aj jednoduché overenie správnosti dvoch hesiel. Tento článok popisuje vytvorenie jednoduchého validátoru pre overenie (potvrdenie) dvoch hesiel vo webovom formulári či sú rovnaké.

Začneme zložitejšie a rovno celým kódom validátora:


<pre>&lt;?php
class My_Validate_PasswordConfirmation extends Zend_Validate_Abstract
{
    const NOT_MATCH = 'notMatchPasswords'; 

    protected $_messageTemplates =  array(
        self::NOT_MATCH =&gt; 'Password are not equals'
    );  

    public function isValid($value, $context = null)
    {
        $value = (string) $value;
        $this-&gt;_setValue($value); 

        if (is_array($context)) {
            if (isset($context['password_confirm']) &amp;&amp; ($value == $context['password_confirm']))
            {
                return true;
            }
        } elseif (is_string($context) &amp;&amp; ($value == $context)) {
            return true;
        } 

        $this-&gt;_error(self::NOT_MATCH);
        return false;
    }
}
?&gt;</pre>

Po kúskoch

Teraz si to rozoberieme postupne.

class My_Validate_PasswordConfirmation extends Zend_Validate_Abstract

Zend Framework a umiestnenie validatoraVytvoríme si triedu pre náš validátor... rozširujeme triedu Zend_Validate_Abstract. Meno našej triedy bude PasswordConfirmation lebo budeme overovat hodnoty dvoch políčok formulára. Teraz ale pozor na textik My_Validate_ pred názvom triedy. Nieje to tam pre srandu a určuje to v podstate miesto kde je validátor uložený. V našom prípade to je adresár library/My/Validate/.

Umiestniť si to môžete aj inde ale toto je jedno z odporúčaní, ako vidíte na obrázku tak do adresára My umiestňujete aj paginatory, vlastne decoratory ci ine dolezite triedy. Takže, teraz vieme ako zostaviť názov triedy a môžeme ísť ďalej.

const NOT_MATCH = 'notMatchPasswords';

Vytvoríme si konštantu s názvom NOT_MATCH ktorej bude priradená hláška pri nesplnení overovania (v našom prípade ak sa heslá nebudú rovnať).

V ďalšej funkcii si do premenných preberieme hodnoty inputov a v podmienke:

if (isset($context['password_confirm']) &amp;&amp; ($value == $context['password_confirm']))

overíme či heslá sú zhodné, ak áno vrátime si TRUE, ak nie vrátime FALSE a zobrazíme $this->_error(self::NOT_MATCH); čo nám vygeneruje hlášku formulára.

Takto samozrejme môžete overovať čokoľvek... heslá, regexp, adresy, unikátne údaje.



Podobné články

Klasické komentáre

Žiadne komentáre   :-(

Pridať komentár

Facebook komentáre ()

Napíš komentár