Zend Framework addaction包含成功或失败消息

时间:2016-06-29 07:22:28

标签: zend-framework

public function addAction()
{
    $form = new ApplicationForm();
    $this->view->form = $form;

    if ($this->getRequest()->isPost()) {
        $formData = $this->getRequest()->getPost();
        if ($form->isValid($formData)) {
        $name = $form->getvalue('name');                
            $class = $form->getvalue('class');
            $file = new Application_Model_DbTable_Records();
            $file->addRecord($name,$class);
            $this->_helper->redirector('index');    
    } 
    }
}

在addAction控制器部分之上,当我点击AddAction时,当我点击提交记录在数据库中的输入时,我的表单正在等待用户输入。

现在我的问题是我想在提交表单数据后添加一些消息,无论是成功还是失败。

你能帮帮我吗?

非常感谢, viswa

1 个答案:

答案 0 :(得分:0)

docs for the action-helper描述了一个例子。但标准用法是这样的:

添加记录后,在重定向之前,请在控制器中设置所需的消息:

public function addAction()
{
    $form = new ApplicationForm();
    $this->view->form = $form;

    if ($this->getRequest()->isPost()) {
        $formData = $this->getRequest()->getPost();
        if ($form->isValid($formData)) {
            $name = $form->getValue('name');                
            $class = $form->getValue('class');
            $file = new Application_Model_DbTable_Records();
            $file->addRecord($name,$class);

            // Add the message here
            $this->_helper->getHelper('FlashMessenger')->addMessage('Record added');

            $this->_helper->redirector('index');    
       } 
    }
}

然后在indexAction - 成功添加记录后重定向的控制器 - 获取消息并将其添加到您的视图中:

public function indexAction()
{
    // All your existing processing
    // Blah, blah..

    // Get the messages from the FlashMessenger
    $messenger = $this->_helper->getHelper('FlashMessenger'); 
    $messages = $messenger->hasMessages() ? $messenger->getMessages() : [];

    // Add the messages into the view
    $this->view->messages = $messages;
}

最后,在您希望显示消息的索引视图脚本中的某个位置,检查消息和呈现,如:

<?php if ($this->messages): ?>
<div id="refresh-messages">
    <ul>
        <?php foreach ($this->messages as $message): ?>
        <li><?= $message ?></li>
        <?php endforeach ?>
    </ul>
</div>
<?php endif ?>

包装div只是通过提供一个DOM元素id来帮助设置样式,你可以将CSS作为目标。

免责声明:未直接测试,只是从内存编码。