带有成功或失败消息的 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
免责声明:未直接测试,仅凭记忆编码。
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免责声明:未直接测试,仅凭记忆编码。