自定义Zend验证器

时间:2012-11-09 07:22:13

标签: php zend-framework zend-validate

我想在Zend中创建一个自定义验证器。

例如我的代码:

$txt_state = new Zend_Form_Element_Text('state');
$txt_state->setLabel('State');

$txt_prop = new Zend_Form_Element_Text('pin');
$txt_prop->setLabel('Property');

现在我希望只有在这两个元素中至少有一个不为空的情况下才能提交表单。

2 个答案:

答案 0 :(得分:1)

你可以这样脏地做:

if ($this->getRequest()->isPost()) {
    if (is_empty($form->getElement('state')->getValue())) {
        $form->getElement('pin')->setRequired();
    }
    if (is_empty($form->getElement('pin')->getValue())) {
        $form->getElement('state')->setRequired();
    }

   if ($form->isValid()) {
     //redirect to success page 
   } else {
    //do nothing, display errors messages, refill form 
   }
}

或带有扩展Zend_Form_Element的清理器。

答案 1 :(得分:0)

在这里,您可以在控制器中添加这样的自定义验证。

$state = "YOUR VALUE";

$form->state->setValue($state);
$form->getElement('state')->setRequired();
$form->getElement('state')->addValidator( 'Alpha', true, array( 'messages' => array( 'notAlpha' => "Please enter alphabetic character only in state name.
") ));

$mArr = array('state'=>$state);

if( !$form->isValid($mArr) ){

    $myErrorArray[] = $form->getMessages();

    $is_error = 1;
}

此处 $ myErrorArray 包含您在元素状态上应用的所有错误消息。