形式和成功输出

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)

希望这可以帮助!