如何防止表单提交没有必填字段?

Stu*_*ent 0 php zend-framework form-submit required-field

我正在创建这样的表单元素:

$element = $this->CreateElement('select', 'countries');
$element->setLabel('Countries');
$element->setAttrib( 'required', true );
$element->addMultiOptions( array( ''=>'Select', '1'=>'Aus','2'=>'UK',.... ) );
Run Code Online (Sandbox Code Playgroud)

以下代码提交表单:

// form
$form = new SomeForm();

// get request
$request = $this->getRequest();

// isPost
if( $request->isPost() ) {

    // isValid
    if( $form->isValid( $request->getPost() ) ) {               
         $values = $form->getValues();    
         // Save values into database here                                      
    } else {            
        $this->view->msg = "Required Fields are missing.";
    } 

} else {        
    $this->view->msg = 'Form is not submitted properly';
}
Run Code Online (Sandbox Code Playgroud)

当我正确填写表单时,它会成功地将记录保存到数据库中.但是当我没有选择国家时,它也会提交表格.我想我应该说"缺少必填字段".消息,而不是在缺少必需字段时将值插入数据库.

我错过了什么?

谢谢

Joh*_*ess 5

这一行:

$element->setAttrib( 'required', true );
Run Code Online (Sandbox Code Playgroud)

并不真正做你认为它做的事情(它设置HTML属性).

你可能想要

$element->setRequired(true);
Run Code Online (Sandbox Code Playgroud)

(假设您使用的是Zend_Form,从您发布的代码中并不完全清楚).