Zend框架中的自定义路由

时间:2012-12-05 09:24:42

标签: php zend-framework routing

我是Zend框架的新手,并使用框架2.0。我需要在PHP Zend框架中对路由进行一些澄清。 1)Bootstrap.php在路由中的作用是什么。 2)我们如何使用index.php进行路由。 3)需要编写哪些代码才能实现自定义路由。

此外,我已经编写了某些代码,但没有获得所需的输出。

bootstrap.php中:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{   
    protected function _initRouter()
    {
    $frontController = Zend_Controller_Front::getInstance();
        $router = $frontController->getRouter();
        $route = new Zend_Controller_Router_Route(':userid',
                                            array('controller' => 'user',              'action'=>     'index', 'userid'=>null));
        $router->addRoute('default', $route);   
    }   
}

的index.php

 error_reporting(E_ALL);
 ini_set('display_errors', 1);

 ini_set('display_errors', true);

 //Define Base Url
 define("BASEURL","http://".$_SERVER['SERVER_NAME']."/sampleapp/public/");

 // directory setup and class loading
 set_include_path('.' . PATH_SEPARATOR . 'library/'
     . PATH_SEPARATOR . 'application/models'
     . PATH_SEPARATOR . 'application/config'
     . PATH_SEPARATOR . get_include_path()
 );

 include ('Zend/Loader/Autoloader.php');
 $loader = Zend_Loader_Autoloader::getInstance();

 // setup controller
 $frontController = Zend_Controller_Front::getInstance();
 $frontController->throwExceptions(true);
 $frontController->setControllerDirectory('application/controllers');

 // run!
 $frontController->dispatch();

我正在尝试获取路线值,例如我的网址是:

localhost:8080/sampleapp/user/index/1.

我应该如何从路线获得1。这里1是用户ID。

1 个答案:

答案 0 :(得分:2)

我建议您执行以下操作:

    在index.php上
  • 你不应该碰任何东西。在创建项目

  • 时,将其保留为Zend默认值 projectHomeDirectory /application/Bootstrap.php上的
  • 包括:

    protected function _initRoutes()
    {
            $router = Zend_Controller_Front::getInstance()->getRouter();
            include APPLICATION_PATH . "/configs/routes.php";
    }
    
  • projectHomeDirectory / application / configs /下创建routes.php文件,并在那里添加您想要的所有路线,例如:

    $router->addRoute('sample-module/user', new Zend_Controller_Router_Route(
            'user/:action/:id/',
            array('module' => 'sample', 'controller' => 'user', 'id'=>'\w+')
    ));
    

当然,您需要创建UserController User模型示例模块和视图。

这些是一些有用的链接:

Zend routing, throws resource not found

http://framework.zend.com/manual/1.12/en/zend.controller.router.html#zend.controller.router.routes.standard