Zend framework2 带密码的Zend Framework 2表单
我使用的是zend framework 2,如何强制用户将密码设置为至少8个字符,但同时包含字母和数字? 这是我的代码: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', '
$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',
),
),
)));