Php 需要zend framework操作堆栈帮助

Php 需要zend framework操作堆栈帮助,php,zend-framework,request,Php,Zend Framework,Request,我正在ZF应用程序中使用操作堆栈。我会在这里解释这个场景。在第一个动作中,我有一个带有选择框和提交按钮的简单表单。现在,在post上,我验证数据,保存并推送操作堆栈中的第二个操作 我在堆栈中推送的第二个操作也是有一个表单,可以在post上保存数据 现在问题出现在这里:当处理动作堆栈时,它弹出堆栈并转发存储在堆栈中的第二个动作。现在,当我的第二个动作被调用时,它会直接进入post中的循环并尝试验证数据,因为第一个动作请求是post,而我不会从第二个动作中获取表单 我知道action stack是邪

我正在ZF应用程序中使用
操作堆栈
。我会在这里解释这个场景。在第一个动作中,我有一个带有选择框和提交按钮的简单表单。现在,在post上,我验证数据,保存并推送
操作堆栈中的第二个操作

我在堆栈中推送的第二个操作也是有一个表单,可以在post上保存数据

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

我知道action stack是邪恶的,但到目前为止,我没有其他选择。这只是我试图解释我的问题的一个场景

如果我不能很好地解释这个问题,我会很乐意更详细地解释

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.
    }
}

提前感谢…

我看到了一个简单的方法:只需在每个表单中添加一个简单的隐藏字段,然后执行下一个条件:

if($this->getRequest()->isPost() && $this->getRequest()->getPost('hidden') == 'second_form') {
    // ...
}

加上这个就行了。但是假设我在第二种形式的行动中不做任何事情,并离开页面。然后我又通过url直接回到这个页面。。在那一刻,我不得不再次以第二个动作的形式设置隐藏元素。。所以我必须在所有的行动中做到这一点谢谢你的建议。。我只是这样做的,现在我已经在每个表单中添加了一些隐藏元素。我没有将其标记为正确,因为我对这个解决方案不是100%满意。。但它固定了我的工作,所以为你干杯…-)为什么你不能重定向到第二个动作?@timfuntain:因为我不想让用户重定向到那个页面。。如果我的第二个操作是自动的,那么它也会向actionstack中添加一些内容并自动移动。您是否尝试过使用
\u forward()
而不是操作堆栈。它允许您通过重定向转发到另一个操作。@RockyFord操作堆栈内部使用forward。。