我正在创建这样的表单元素:
$element = $this->CreateElement('select', 'countries');
$element->setLabel('Countries');
$element->setAttrib( 'required', true );
$element->addMultiOptions( array( ''=>'Select', '1'=>'Aus','2'=>'UK',.... ) );
以下代码提交表单:
// 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';
}
当我正确填写表单时,它会成功地将记录保存到数据库中。但是当我没有选择国家时,它也会提交表格。我想我应该说“缺少必填字段”。消息,而不是在缺少必填字段时将值插入数据库。
我错过了什么?
由于
答案 0 :(得分:5)
这一行:
$element->setAttrib( 'required', true );
并没有真正做到你认为它做的事情(它设置了一个HTML属性)。
你可能想要
$element->setRequired(true);
(假设您使用的是Zend_Form,从您发布的代码中并不完全清楚。)