【问题标题】:Custom Routing in Zend FrameworkZend 框架中的自定义路由
【发布时间】:2012-12-05 09:24:42
【问题描述】:

我是 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。

【问题讨论】:

  • 您提供的所有代码都是 Zend-Framework 1,因此我将重新标记它以获得更好的帮助。

标签: php zend-framework routing


【解决方案1】:

我会建议执行以下操作:

  • 在 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+')
    ));
    

当然你需要创建用户控制器用户模型示例模块和视图。

这些是一些有用的链接:

Zend routing, throws resource not found

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    相关资源
    最近更新 更多