将Zend控制器与数字操作一起使用

时间:2011-06-28 04:19:31

标签: php zend-framework

通常如果我想创建页面/user/profile,我会在用户控制器中创建函数profileAction()。 现在,如果我想创建一个名为/error/404的页面,由于合成错误404Action(),我无法创建unexpected '404', expecting 'identifier' 有没有办法用这样的数字创建页面?

1 个答案:

答案 0 :(得分:3)

一种方法是定义自定义路线,如下所示:

resources.routes.error.route = "/error/:id"
resources.routes.error.type = "Zend_Controller_Router_Route" 
resources.routes.error.defaults.module = default
resources.routes.error.defaults.controller = error
resources.routes.error.defaults.action = index
resources.routes.error.reqs.id = "\d+"

在indexAction中,您将转发到特定错误代码的操作。例如,对于404错误:

class ErrorController extends Zend_Controller_Action {


    public function indexAction() {
        $errorId = $this->_getParam('id', null);            
        return $this->_forward("error$errorId" );
    }

    public function error404Action() {
        echo "error 404"; 
    }
}

这是一个非常简化的例子,但它应该足以说明如何完成它。

另一种方式,而不是转发,只是为了呈现适当的视图脚本,例如

class ErrorController extends Zend_Controller_Action {


    public function indexAction() {
        $errorId = $this->_getParam('id', null);           
        // e.g. redner error/error404.phtml 
        $this->_helper->viewRenderer('error$errorId');
    }
}