dpqg86714 2011-05-15 12:55
浏览 35

使用服务层时如何处理错误?

in my Zend Framework project, I use a Service Layer, however I don't really know where to handle errors.

For example, let's say I've a UserService::updateUser($data);

What if I've:

$data = array(
   'userId' => 2,
   'firstName' => 'Jane',
   'lastName'  => 'Doe',
);

And user with id 2 doesn't exist?

Where and how would you handle such errors?

  • 写回答

1条回答 默认 最新

  • dongqieli4164 2011-05-15 23:29
    关注

    You can forward to a specific controller to handle all your business errors, like this :

    if ($error=true)
            return $this->_forward('standarderror', 'businesserror', 'default',
                    array('msgtitle' => $this->view->translate('item_not_found'),
                        'msg' => $this->view->translate('item_not_found_msg')));
    

    and where your BusinesserrorController looks like :

    class BusinesserrorController extends Zend_Controller_Action {
    
    public function init() {
        $this->_helper->viewRenderer->setNoRender();
    }
    
    public function standarderrorAction() {
        $msgtitle = $this->_getParam('msgtitle');
        $msg = $this->_getParam('msg');
    
        $this->view->errortitle = $msgtitle;
        $this->view->errormessage = $msg;
    
        $this->view->nextstep = $this->view->translate('return_to_the_homepage');
        $this->view->nextstepurl = "/";
    
        echo $this->render('error/businesserror', null, true);
    }
    
    }
    

    you can parametrize the forwarded url as well ;)

    评论

报告相同问题?