Zend Action viewRenderer() отправляет мою форму
Я пытаюсь отправить параметр из indexAction в editAction с помощью функции viewRender. Проблема в том, что когда вызывается editAction, это заставляет мою форму $ думать, что она была опубликована.
public funciton indexAction(){
...
if(isset($_POST['edit'])){
$this->_helper->viewRenderer('edit');
$this->editAction($thingINeed);
}
...
}
public function editAction($thingINeed){
...
if($form->posted){
var_dump('FORM POSTED');
}
...
}
"FORM POSTED" печатается сразу, хотя я еще не разместил форму. Я не уверен, почему форма $form->posts установлена на true при первоначальной визуализации. Кто-нибудь имеет представление о том, почему это или обходной путь?
2 ответа
Я не уверен, что вы хотите получить, но для того, чтобы передать значение между двумя действиями, лучше использовать методы _getParam и _setParam:
public funciton indexAction(){
...
if(isset($_POST['edit'])){
$this->_setParam( 'posted', true );
$this->_helper->viewRenderer('edit');
//$this->editAction($thingINeed);
// It should be better to use Action stack helper to route correctly your action :
Zend_Controller_Action_HelperBroker::getStaticHelper( 'actionStack' )->actionToStack( 'edit' );
} else {
$this->_setParam( 'posted', false );
}
...
}
// param $thingINeed is not "needed" anymore
public function editAction(){
...
if( true == $this->_getParam( 'posted' ) {
var_dump('FORM POSTED');
}
...
}
Вы должны проверить свою форму следующим образом:
$form = new MyForm();
if ($this->_request->isPost()) {
$formData = $this->_request->getPost();
if ($form->isValid($formData)) {
echo 'success';
exit;
} else {
$form->populate($formData);
}
}
$this->view->form = $form;