我是zendframework的新手。我正在使用zendframework版本2.
我有一个ClientForm类,它继承自Zend \ Form \ Form。
class Client extends Form
{
public function __construct($name = null, $options = array())
{
if (null == $name) $name = 'ClientFrom';
parent::__construct($name, $options);
$this->add(array(
'name' => 'clientName',
'type' => 'Text'
));
$this->add(array(
'name' => 'address1',
'type' => 'Text'
));
}
}
我需要为上面的表单实现验证和过滤。
验证规则
'clientName' => required, min = 3, max = 25
过滤规则
'clientName' => [a-zA-Z0-9_ ]
问题
谢谢。
答案 0 :(得分:2)
试试这个:
$this->add(array(
'name' => 'clientName',
'type' => 'text',
'required' => true,
'validators' => array(
new Validator\RegexValidator('/^#[a-zA-Z0-9_ ]$/'),
new Validator\StringLength(array('min'=>3 ,'max' => 25))
)
));
答案 1 :(得分:1)
您可以使用Zend\InputFilter
- 组件来执行此类任务。那里有很多例子,有一些例如here或者here或here等配置文件。
后两个是用于特定Doctrine-Validators的示例,但您也可以将它们用于任何普通的Zend\InputFilter
。
答案 2 :(得分:0)
我想你自己还没有代码......好吧。
'clientName'=>必需,min = 3,max = 25
这个太难了,继承了一些简单的代码...写得非常简单易读,如果你愿意,可以缩短if语句:
if(!empty($clientName)) {
if(!($clientName > 25)) {
if(!($clientName < 3)) {
echo "valid name!";
}
}
} else {
return false;
}
'clientName'=&gt; [a-zA-Z0-9_]
您可以使用RegEx或字符串函数,只允许这些特定字符。