Как предотвратить отправку формы без обязательных полей?
Я создаю элементы формы, как это:
$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';
}
Когда я правильно заполняю форму, она успешно сохраняет запись в базе данных. Но когда я не выбираю страну, он также отправляет форму. Я думаю, что я должен показать "Обязательные поля отсутствуют". сообщение вместо вставки значений в базу данных, когда обязательные поля отсутствуют.
Что мне не хватает??
Спасибо
1 ответ
Решение
Эта строка:
$element->setAttrib( 'required', true );
на самом деле не делает то, что вы думаете (он устанавливает атрибут HTML).
Вы, вероятно, хотели
$element->setRequired(true);
(Это предполагает, что вы используете Zend_Form, это не совсем понятно из кода, который вы разместили).