Zend framework2 带密码的Zend Framework 2表单

Zend framework2 带密码的Zend Framework 2表单,zend-framework2,zend-form,zend-db-table,Zend Framework2,Zend Form,Zend Db Table,我使用的是zend framework 2,如何强制用户将密码设置为至少8个字符,但同时包含字母和数字? 这是我的代码: $this->add(array( 'name' => 'password', 'attributes' => array( 'type' => 'password', 'id' => 'password', '

我使用的是zend framework 2,如何强制用户将密码设置为至少8个字符,但同时包含字母和数字? 这是我的代码:

$this->add(array(
        'name' => 'password',
        'attributes' => array(
            'type'        => 'password',
            'id'          => 'password',
            'class'       => 'span12 noradius',
            'placeholder' => 'Password'
        ),
        'options' => array(
            'label' => 'Password :'
        )
    ));

您可以编写自定义验证器,请检查以下内容:


您可以编写自定义验证器,请检查以下内容:

class MyValid\PasswordStrength extends Zend\Validator\AbstractValidator
{
    const LENGTH = 'length';
    const UPPER  = 'upper';
    const LOWER  = 'lower';
    const DIGIT  = 'digit';

    protected $messageTemplates = array(
        self::LENGTH => "'%value%' must be at least 8 characters in length",
        self::UPPER  => "'%value%' must contain at least one uppercase letter",
        self::LOWER  => "'%value%' must contain at least one lowercase letter",
        self::DIGIT  => "'%value%' must contain at least one digit character"
    );

    public function isValid($value)
    {
        $this->setValue($value);

        $isValid = true;

        if (strlen($value) < 8) {
            $this->error(self::LENGTH);
            $isValid = false;
        }

        if (!preg_match('/[A-Z]/', $value)) {
            $this->error(self::UPPER);
            $isValid = false;
        }

        if (!preg_match('/[a-z]/', $value)) {
            $this->error(self::LOWER);
            $isValid = false;
        }

        if (!preg_match('/\d/', $value)) {
            $this->error(self::DIGIT);
            $isValid = false;
        }

        return $isValid;
    }
}
$inputFilter->add($factory->createInput(array(
    'name'     => 'password',
    'required' => true,
    'validators' => array(
        array(
            // What ever your namespace is etc determines this..
            'name'    => 'My\Validator\PasswordStrength',
        ),
    ),
)));