2

在我的 Zend Framework 项目中,我使用了一个服务层,但是我真的不知道在哪里处理错误。

例如,假设我有一个UserService::updateUser($data);

如果我有:

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

id 为 2 的用户不存在?

您将在哪里以及如何处理此类错误?

4

1 回答 1

1

您可以转发给特定的控制器来处理您的所有业务错误,如下所示:

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')));

以及您的 BusinesserrorController 的样子:

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);
}

}

您也可以对转发的 url 进行参数化;)

于 2011-05-15T23:29:10.433 回答