形式和成功输出

时间:2010-05-16 05:07:19

标签: php zend-framework forms

那么,

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

1 个答案:

答案 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; ?>

希望这有帮助!