0

action stack在我的 ZF 应用程序中使用。我将在这里解释场景。在第一个动作中,我有一个带有选择框和提交按钮的简单表单。现在在发布后,我验证数据并保存并将我的第二个操作推送到action stack.

我推入堆栈的第二个动作也有一个表格,可以在帖子中保存数据。

现在问题出现在这里:当动作堆栈被处理时,它会弹出堆栈并转发我存储在堆栈中的第二个动作。现在,当我的第二个动作被调用时,它直接进入 post 中的循环并尝试验证数据,因为第一个动作请求是 post,而我没有从第二个动作中获取表单。

我知道动作堆栈是邪恶的,但到目前为止我别无选择。这只是我试图解释我的问题的一种情况。

如果我无法正确解释问题,我很乐意更详细地解释......

public function firstactionAction() {
    if($this->getRequest()->isPost()) {
        //validate and save form
        $helper = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack');
        $request = new Zend_Controller_Request_Http();
        $request->setControllerName('index');
        $request->setModuleName('default');
        $request->setActionName('secondaction');
        $helper->pushStack($request);
    } else {
        //creating form object and assigning to view.
    }
}
public function secondactionAction() {
    if($this->getRequest()->isPost()) {
        //Problem is here.. when action stack gets processed.. it directly comes here. as it uses forward internally..
    } else {
        //creating form object and assigning to view.
    }
}

提前致谢...

4

1 回答 1

1

我看到了一种简单的方法:只需向每个表单添加一个简单的隐藏字段并执行下一个条件:

if($this->getRequest()->isPost() && $this->getRequest()->getPost('hidden') == 'second_form') {
    // ...
}
于 2012-05-11T08:06:12.750 回答