我想扩展zend_controller_操作,这样我就可以让消息具有通用性。现在在predispatch()中,我正在设置所有的错误和警告消息。如何使addMessage(参见代码)和predispatch函数在所有控制器中通用?
<?php
类playgroundcontroller扩展zend_controller_操作
{
public function init()
{
/* Initialize action controller here */
}
public function preDispatch()
{
$flashMessenger = $this->_helper->FlashMessenger;
$flashMessenger->setNamespace('Errors');
$this->view->Errors = $flashMessenger->getMessages();
$flashMessenger->setNamespace('Warnings');
$this->view->Warnings = $flashMessenger->getMessages();
$flashMessenger->setNamespace('Messages');
$this->view->Messages = $flashMessenger->getMessages();
$flashMessenger->setNamespace('Success');
$this->view->Success = $flashMessenger->getMessages();
}
protected function AddMessage($message,$type='Errors') {
$flashMessenger = $this->_helper->FlashMessenger;
$flashMessenger->setNamespace($type);
$flashMessenger->addMessage($message);
}
public function flashAction()
{
$this->AddMessage('This is an error message');
$this->AddMessage('This is another error message');
$this->AddMessage('This is a warning message','Warnings');
$this->AddMessage('This is message','Messages');
$this->AddMessage('This is another success message','Success');
}
}
最佳答案
我没有任何采埃孚的经验,但我无法想象为什么以下这些都不起作用:
abstract class Zend_Controller_MyAction extends Zend_Controller_Action
{
public function preDispatch()
{
...
}
protected function addMessage ($message, $type='Errors')
{
....
}
//... other common methods
}
然后您的
PlaygroundController
将扩展Zend_Controller_MyAction
而不是Zend_Controller_Action
。