形式和成功输出

问题描述:

那么,形式和成功输出

这是一个初学者的问题,但我真的不知道什么是最好的方式。 我在我的项目中有一个基本的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; ?> 

希望这有助于!

+0

yeahh!这帮了很大的忙! thx的答案..我只是犯了一个错误,我不打算重定向。不过,这是做这件事的最好方法吗?我应该怎么做没有重定向? – 2010-05-16 06:56:15

+0

我更喜欢在表单发布之后重定向,因为它清除了发布请求并允许用户刷新页面而无需双击提交表单。 如果你不想重定向,你可以使用你描述的方法,它应该工作正常。 – Aaron 2010-05-16 23:39:25

+1

你缺少一个右括号'flashMessenger-> hasMessages():??>'应该是' flashMessenger-> hasMessages()):? >' – Shoan 2011-08-17 13:50:13