Rod*_*uza 2 php forms zend-framework
好,
这是一个初学者的问题,但我真的不知道什么是最好的方式.我的项目中有一个基本的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';
}
Run Code Online (Sandbox Code Playgroud)
然后我的看法:
....
<?php if ($this->flagStatus) { ?>
<div id="divStatus" class="success span-5" style="display: none;">
<?php echo $this->flagStatus; ?>
</div>
<?php } ?>
....
Run Code Online (Sandbox Code Playgroud)
小智 6
在这种情况下,由于您正在重定向,$ this-> view-> flagStatus将丢失.相反,你应该使用的是flashMessenger Action助手:
http://framework.zend.com/manual/en/zend.controller.actionhelpers.html
基本上你就像你现在一样使用它,除非你改变:
$this->view->flagStatus = 'message';
Run Code Online (Sandbox Code Playgroud)
至
$this->_helper->flashMessenger->addMessage('message');
Run Code Online (Sandbox Code Playgroud)
在此之后,您需要将flashMessenger对象发送到视图.您应该在每个页面请求上执行的位置执行此操作,以便您可以向任何页面发送消息:
$this->view->flashMessenger = $this->_helper->flashMessenger;
Run Code Online (Sandbox Code Playgroud)
然后将您的视图更改为:
<?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; ?>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!