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