带有成功或失败消息的 Zend Framework addaction

Zend Framework addaction with success or failure message

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 时,当我单击提交记录在数据库中的输入时,我的表单正在等待用户输入。

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

你能帮我解决这个问题吗?

非常感谢, 视觉

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.

定位到该元素 ID

免责声明:未直接测试,仅凭记忆编码。