0

我正在尝试使用 viewRender 函数将参数从 indexAction 发送到 editAction。问题是当调用 editAction 时,它会导致我的 $form 认为它已经发布。

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 在初始渲染时设置为 true。有谁知道为什么会这样或解决方法?

4

2 回答 2

0

你应该像这样检查你的表格:

$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;
于 2013-08-08T13:57:22.077 回答
0

我不确定你想获得什么,但为了在两个动作之间传达价值,最好使用 _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');
    }
    ...
}
于 2013-08-09T14:02:48.717 回答