什么是路线,在哪里以及如何定义它?

时间:2011-08-17 01:49:01

标签: zend-framework zend-route

我的zend应用程序中有几个模块。在我的模块的一个视图脚本中,我创建了一个URL

$links['create'] = $this -> url(array("controller" => "roles", "action" => "create"), "custom");

这会带来错误,说未定义Route“custom”。

什么是路线?在哪里定义它以及如何?

2 个答案:

答案 0 :(得分:1)

Zend Framework手册对路由和路由器有相当不错的documentation,包括几种定义路由的方法的描述。

在最基本的层面上,路由既用于将URL解析为参数(比如应该使用哪个控制器和操作),也用于反向:获取参数并生成URL。

出于您的目的,除非您想要更改 ZF将如何构建您的网址,否则您只需将“自定义”部分从url电话中删除即可。

答案 1 :(得分:1)

在我的bootstrap文件中,我通过添加以下功能

初始化了我的路由
public function _initRouting() {

        // Get Front Controller Instance
        $front = Zend_Controller_Front::getInstance();

        // Get Router
        $router = $front->getRouter();
        $routedetialevent = new Zend_Controller_Router_Route(
            '/events/detail/:id',
            array(
                'controller' => 'events',
                'action'     => 'detail'
            )
        );
        $routeregister = new Zend_Controller_Router_Route(
            '/index/register/:id',
            array(
                'controller' => 'index',
                'action'     => 'register'
            )
        );

        $routerdetail = new Zend_Controller_Router_Route(
            '/commentaries/details/:id',
            array(
                'controller' => 'commentaries',
                'action'     => 'details'
            )
        );


        $router->addRoute('post', $routedetialevent);
        $router->addRoute('register', $routeregister);
        $router->addRoute('detail', $routerdetail);
    }

因为我在我的活动中添加了自定义路线,每当我访问详细信息页面时都会发表评论我不必在我的网址中写入ID,所以我的网址就像

http://localhost/example/events/detail/3

如果我不会添加路线而不是我的网址

http://localhost/example/events/detail/id/3