Php Zend重定向
由于某些原因,我的zend应用程序在不应该重定向的情况下重定向 索引视图只是显示表单。下一个视图根据表单提供的信息显示数据库中的一些信息。然后,用户单击确认按钮,将其发送给另一个操作,该操作构造并发送电子邮件。我有一个try/catch块,它试图发送电子邮件。如果成功,设置一个变量,否则设置另一个变量 Psudo代码:Php Zend重定向,php,zend-framework,Php,Zend Framework,由于某些原因,我的zend应用程序在不应该重定向的情况下重定向 索引视图只是显示表单。下一个视图根据表单提供的信息显示数据库中的一些信息。然后,用户单击确认按钮,将其发送给另一个操作,该操作构造并发送电子邮件。我有一个try/catch块,它试图发送电子邮件。如果成功,设置一个变量,否则设置另一个变量 Psudo代码: public function indexAction() { $form = new Form(); if(!empty($_POST)) { if($form-&g
public function indexAction()
{
$form = new Form();
if(!empty($_POST))
{
if($form->isValid($_POST))
{
$this->_helper->FlashMessenger($_POST); //store $_POST in temporary session
//show a different view
//do something else
}
}
$this->view->form = $form;
}
因此,我正在实例化一个表单,如果用户发布表单,然后验证它,并将会话变量存储在flash会话中,并显示不同的视图。在所有情况下,如果表单已发送,则会自动填充表单
public function anotherAction()
{
$messages = $this->_helper->FlashMessenger->getMessages();
if (!empty($messages[0]))
{
$post = $messages[0];
$mail = new My_Mail();
//set up email
try
{
$mail->send();
$success = true;
}
catch (Zend_Exception $e)
{
$success=false;
//save $e to log
}
$this->view->success = $success;
}
else
{
//if not sent here by /page, then redirect to it.
$this->_helper->redirector->goToRouteAndExit(array(), 'page', true);
}
}
在这个动作中,我正在检查会话。如果其中包含表单数据,则尝试发送电子邮件并设置变量;否则重定向回表单。view变量用于显示一封邮件或另一封已发送/未发送的邮件
问题是:无论如何,它都会重定向回表单。表单提交并确认后,我们转到下一页,在那里它做了一些事情,然后它重定向回带有表单的页面。它为什么这样做?我如何阻止它
[编辑]
绘图变厚:如果在新选项卡中打开“确认”链接,它将正确运行并停止。如果我在同一选项卡/窗口中执行此操作,它将运行两次并重定向
[另一编辑]
我已经删除了第二个操作中的所有代码。
代码现在是:
public function anotherAction()
{
$messages = $this->_helper->FlashMessenger->getMessages();
if (!empty($messages[0]))
{
;
}
else
{
$this->_helper->redirector->goToRouteAndExit(array(), 'page', true);
}
}
它仍然在重定向
我有确认按钮
<a href="next-page"><button>Confirm</button></a>
锚和按钮是否都会调用下一页
[最后编辑]
好的,这就是问题所在。看起来按钮和锚都在调用页面!因此,它第一次运行时没有问题,然后再次运行并重定向我:
好了,我们开始了。每天学习新的东西
谢谢大家的帮助。我假设您的表单已提交给/controller/other/ 在//do something代码块中该操作会发生什么?因为我们知道它并不是在同一个过程中同时做if和else。。。它一定是在if中做了一些事情,你没有在这里显示,或者触发它调用函数,_forward's,或者以某种方式第二次到达这一点,然后评估逻辑的其他部分
您可以发布一个更完整的示例以供查看吗?尝试用骰子或$this->\u forward“page”替换重定向,以查看重定向是否隐藏了任何php警告消息。按钮和锚都在调用页面!所以它第一次运行时没问题,然后再次运行并重定向我 已删除按钮。请尝试以下操作:
$this->redirect()->toRoute('routeName',array('controller'=>'controllerName','action'=>'actionName'));
$this->redirect()->toUrl('UrlLink')
您省略了代码中的一些重要部分,例如用于显示不同视图的部分,并执行了其他操作