There is also a Zend_Validate_Db_NoRecordExists validator that can be used
for this.

http://framework.zend.com/manual/en/zend.validate.set.html#zend.validate.Db

Check out the Excluding records section for allowing one email address (the
one the user already has).

Konr

On Wed, Jan 20, 2010 at 1:02 PM, bparise <[email protected]> wrote:

>
> Thanks for your input!
> We actually talked about doing that (custom validators) soon after we
> realized that the isValid() methods were seemingly build *for* validators.
> Trying to not repeat ourselves by creating custom validators
> left-and-right,
> I came up with a neat callback one...
>
> <?php
>
> class My_Validate_Callback extends Zend_Validate_Abstract
> {
>    const ERROR_KEY = 'message';
>
>    private $_callback;
>    private $_params = array();
>
>    protected $_messageTemplates = array();
>
>    public function __construct($callback, $params = array(), $message)
>    {
>        $this->_callback = $callback;
>        $this->_params = $params;
>        $this->_messageTemplates = array(self::ERROR_KEY => $message);
>    }
>
>    public function isValid($value)
>    {
>        $params = $this->_params;
>        $params[] = $value;
>        if (call_user_func_array($this->_callback, $params)) {
>            return true;
>        } else {
>            $this->_error(self::ERROR_KEY);
>            return false;
>        }
>    }
> }
> ?>
>
> Usage
>
> <?php
> $email = new Zend_Form_Element_Text('email');
> $email->addValidator(new My_Callback_Validator(array('User',
> 'isEmailUnique'), array(), 'Email is not unique');
> ?>
>
> The 2nd argument allows you to pass more data to the callback method
>
> <?php
>
> new My_Callback_Validator(array('User', 'isEmailUnique'), array(), 'Email
> is
> not unique')
> Method sig: User::isEmailUnique($value);
>
> new My_Callback_Validator(array('User', 'isEmailUnique'), array('firstVar',
> 'secondVar'), 'Email is not unique')
> Method sig: User::isEmailUnique($first, $second, $value);
>
>
> --
> View this message in context:
> http://n4.nabble.com/Overriding-Zend-Form-isValid-tp1018622p1018652.html
> Sent from the Zend Framework mailing list archive at Nabble.com.
>

Reply via email to