我不确定如何执行此操作:添加muy'add'操作后,我想将用户发送到我的'view'操作,以便他们可以看到提交的行。但看到它刚刚提交,我想向用户显示他们的数据已提交的成功消息。
我以这种方式显示我的行:url.com/view/32
如果他们刚刚提交了某些内容,我只想展示成功消息,而不仅仅是在他们只是在阅读数据时。
所以我想将$submitted = true
之类的内容传递给我的视图Action,但我不知道如何做到这一点。有什么建议吗?
另外,我想到的另一种方法是检查访问者是否来自我的添加操作,如果是,则显示成功消息。再说一次,不知道如何做到这一点......
答案 0 :(得分:3)
flashMessenger
动作帮助程序用于在下一个请求中显示消息。
它使用会话来存储信息。
答案 1 :(得分:1)
在研究了Zend在这里和其他地方的几个问题之后 我得出结论,没有一步一步的列表回答zend问题 真的很糟糕 所以在这里:
在您的form.html中:
<input type="text" name="field[input1]" id="input1" />
<input type="text" name="field[input2]" id="input2" />
你的controller.php中的:
public function addAction(){
if ($this->getRequest()->isPost()){
$fields= $this->_getParam("field");
$this->view->msg = ($this->myDB->add($fields) ? "Add succeeded" : "Add failed");
header("location: http://mysite.com/thepageiwantutogoto");
}
}
在你的view.phtml中:
<?php echo $this->msg ?>
btw $this->myDB->add($fields)
是您对db
答案 2 :(得分:0)
您可以在addAction()
成功时简单地渲染视图:
return $this->render('view');
所以在persudeo:
的addAction():
您需要将所有内容传递给您为viewAction()
执行的查看脚本,但您也可以传递一条消息,该消息现在将转到视图脚本。
在你的view.phtml中只需使用php snipet来测试if (isset($this->message))echo "Data Added....";
这种方式当你使用普通的viewAction()时它不会显示消息。这将使用户处于addAction()
网址。
如果您想将用户移至其他网址see the answeer here
答案 3 :(得分:0)
您可以通过会话变量发送数据(您可以使用Zend_Session来处理)。当您到达视图时,检查会话变量是否已设置,如果是,则显示消息并使变量无效。这样,如果用户刷新页面,则不再显示该消息(这不是url params的情况,将再次显示该消息)。如果未设置,则只是不显示消息。
我使用此系统在登录屏幕上显示一条消息,如果未登录的用户尝试访问安全部分且效果很好
答案 4 :(得分:0)
尝试这样的事情::
if ($this->getRequest()->isPost()) {
if ($form->isValid($_POST)) {
$data = $form->getValues();
$M = new Model_Xyz();
$M->insert($data);
//now the magic, pass success param to to the viewAction()
return $this->_forward('view', null, null, array ('success' => 1));
}
}
现在,成功参数传递给viewAction(),就像它在URL中一样,因此您可以在控制器和视图中访问它。祝你好运!