那么,
这是初学者的问题,但我真的不知道什么是最好的方法。 我的项目中有一个基本的 CRUD (创建,检索,更新和删除),如果在 div 内成功或不成功,我想输出一些消息页。
所以,基本上,我有一个表单,哪个动作设置在同一个页面上,我在同一个表单下面有一个 div #statusDiv ,我想输出类似 Register的内容包含在成功。
这样做的最佳方式是什么?
$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 } ?>
....
答案 0 :(得分:6)
在这种情况下,由于您正在重定向,因此$ this-&gt; view-&gt; flagStatus将会丢失。相反,你应该使用的是flashMessenger Action助手:
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; ?>
希望这有帮助!