形式和成功输出
问题描述:
那么,形式和成功输出
这是一个初学者的问题,但我真的不知道什么是最好的方式。 我在我的项目中有一个基本的CRUD(创建,检索,更新和删除),并且如果成功或者不想在div内输出一些消息在同一页面内。
所以,基本上,我有一个动作设置为同一个页面的形式,我有以下我想输出类似注册附带成功此相同形式的DIV #statusDiv。
什么是这样做的最佳方式?
- 在控制器中设置一个标志
$this->view->flagStatus = 'message'
然后在视图中调用它?
只是为了更清楚。这是我的代码:
//IndexController.php indexAction()
...
//Check if there's submitted data
if ($this->getRequest()->isPost()) {
...
$registries->insert($data);
$this->view->flagStatus = 'message';
}
然后我的观点:
....
<?php if ($this->flagStatus) { ?>
<div id="divStatus" class="success span-5" style="display: none;">
<?php echo $this->flagStatus; ?>
</div>
<?php } ?>
....
答
在这种情况下,因为你要重定向的$这个 - >查看 - > flagStatus将会丢失。相反,你应该用的是以FlashMessenger动作助手:
http://framework.zend.com/manual/en/zend.controller.actionhelpers.html
基本上你使用它,就像你是目前,除了你会改变:
$this->view->flagStatus = 'message';
到
$this->_helper->flashMessenger->addMessage('message');
之后,您需要将flashMessenger对象发送到视图。你应该在得到每个页面请求执行的地方这样做,所以你可以发送邮件到任何页面:
$this->view->flashMessenger = $this->_helper->flashMessenger;
,然后更改视图到:
<?php if($this->flashMessenger->hasMessages(): ?>
<div id="divStatus" class="success span-5" style="display: none;">
<?php $messages = $this->flashMessenger->getMessages(); ?>
<?php foreach($messages as $message): ?>
<p><?= $message; ?></p>
<?php endforeach; ?>
</div>
<?php endif; ?>
希望这有助于!
yeahh!这帮了很大的忙! thx的答案..我只是犯了一个错误,我不打算重定向。不过,这是做这件事的最好方法吗?我应该怎么做没有重定向? – 2010-05-16 06:56:15
我更喜欢在表单发布之后重定向,因为它清除了发布请求并允许用户刷新页面而无需双击提交表单。 如果你不想重定向,你可以使用你描述的方法,它应该工作正常。 – Aaron 2010-05-16 23:39:25
你缺少一个右括号'flashMessenger-> hasMessages():??>'应该是' flashMessenger-> hasMessages()):? >' –
Shoan
2011-08-17 13:50:13