我正在尝试构建一个非常简单的表单,并希望在表单中添加验证。在表单中添加它时,不需要百万行代码就行了大约3行。
以下是我的两个字段:
$this->add(array(
'name' => 'username',
'attributes' => array(
'type' => 'text',
),
'options' => array(
'label' => 'Name*',
'required' => true,
),
'filters' => array(
array('StringTrim')
),
));
$this->add(array(
'name' => 'email',
'attributes' => array(
'type' => 'text',
),
'options' => array(
'label' => 'E-Mail*',
'required' => true,
),
'validators' => array(
array('regex', true, array(
'pattern' => '/[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i',
'messages' => 'Bitte eine gültige E-Mailadresse angeben'))
),
'filters' => array(
array('StringTrim')
),
));
$form->isValid()
总是返回true。即使该领域是空的。我有另一个带有正则表达式验证器的字段,同样的事情...... WTF,Zend?
我的控制器看起来像这样:
$form = new UserForm();
$form->setHydrator(new DoctrineEntity($entityManager));
$request = $this->getRequest();
if ($request->isPost()) {
$backenduser = new User();
$form->bind($user);
$form->setData($request->getPost());
if ($form->isValid()) {
....
}
有什么想法吗?
答案 0 :(得分:2)
验证和过滤 - 定义不是表单本身的一部分。见http://framework.zend.com/manual/2.0/en/user-guide/forms-and-actions.html
答案 1 :(得分:0)
试试这个,传递$ _POST数据。
if($form->isValid($_POST)) {
// success!
} else {
// failure!
}