В дополнение к ответу @VAShhh.С некоторыми более подробными сведениями: вам нужно сделать две вещи, заполнить поля формы данными POST и применить к этим данным фильтры безопасности и валидаторы.Zend_Form предоставляет одну простую функцию, которая выполняет обе функции: isValid($data)
.
. Поэтому вы должны:
- создать свою форму
- проверить, что вы находитесь в POST-запросе
- заполнить и отфильтровать и проверить эти данные
- либо обработать тот факт, что может быть недействительным, и повторно показать форму, которая теперь украшена ошибками ИЛИ получить действительные данные изform
Таким образом, вы должны получить:
function submitformAction() {
$form = new Form_MyForm();
$request = $this->getRequest();
if ( $request->isPost() ) {
if (!$form->isValid($request->getPost())) {
$this->view->form = $form;
// here maybe you could connect to the same view script as your first action
// another solution is to use only one action for showform & submitform actions
// and detect the fact it's not a post to do the showform part
} else {
// values are secure if filters are on each form element
// and they are valid if all validators are set
$securizedvalues = $form->getValues();
// temporary debug
print_r($securizedvalues);die();
// here the nice thing to do at the end, after the job is quite
// certainly a REDIRECT with a code 303 (Redirect after POSt)
$redirector = $this->_helper->getHelper('Redirector');
$redirector->setCode(303)
->setExit(true)
->setGotoSimple('newaction','acontroller','amodule');
$redirector->redirectAndExit();
} else {
throw new Zend_Exception('Invalid Method');
}
}
И, как сказано в коде, повторно отображающем форму, вы действительно должны использовать одну и ту же функцию для отображения и обработки POST.так как множество шагов действительно одинаковы:
- построение формы
- , показывающее ее в виде в случае ошибок
Путем обнаружения запросаэто POST, который вы можете обнаружить в случае обработки POST.