Как предотвратить отправку формы без обязательных полей? - PullRequest
0 голосов
/ 13 августа 2011

Я создаю элементы формы следующим образом:

$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 Ответ

5 голосов
/ 13 августа 2011

Эта строка:

$element->setAttrib( 'required', true );

на самом деле не делает то, о чем вы думаете (он устанавливает атрибут HTML).

Вы, вероятно, хотели

$element->setRequired(true);

(Предполагается, что вы используете Zend_Form, это не совсем понятно из кода, который вы разместили).

...