Zend framework Zend Framework application.ini路由器问题

Zend framework Zend Framework application.ini路由器问题,zend-framework,Zend Framework,好的,我对这一点还不太熟悉,我仔细阅读了所有的教程并回答了我能找到的问题。不幸的是,我还没有找到一个适合我的完整的application.ini 我一定是在什么地方塞满了东西——我可以让基本路由正常工作,但只要我尝试添加一个变量,我就无法让它工作。因此/guide to works,但是/guide to/london给出了错误“someplace未指定” 我正在application.ini中执行所有路由。这是我的档案: [production] phpSettings.display_sta

好的,我对这一点还不太熟悉,我仔细阅读了所有的教程并回答了我能找到的问题。不幸的是,我还没有找到一个适合我的完整的application.ini

我一定是在什么地方塞满了东西——我可以让基本路由正常工作,但只要我尝试添加一个变量,我就无法让它工作。因此/guide to works,但是/guide to/london给出了错误“someplace未指定”

我正在application.ini中执行所有路由。这是我的档案:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 1

resources.layout.layoutPath = APPLICATION_PATH "/views/layouts/"
resources.layout.layout = wrapper

resources.view = ""

resources.router.routes.home.route = "/stuff"
resources.router.routes.home.defaults.module = default
resources.router.routes.home.defaults.controller = index
resources.router.routes.home.defaults.action = index 

resources.router.routes.guide-to.route = "/guide-to"
resources.router.routes.guide-to.defaults.controller = "destination"
resources.router.routes.guide-to.defaults.action = "guide-to" 

resources.router.routes.place.route = "guide-to/:someplace"
resources.router.routes.place.defaults.controller = "destination"
resources.router.routes.place.defaults.action = "guide-to" 

resources.router.routes.guides.route = "/guiderrrs"
resources.router.routes.guides.defaults.controller = destination
resources.router.routes.guides.defaults.action = guiderrrs

resources.router.routes.guidez.route = "/guidez"
resources.router.routes.guidez.defaults.controller = destination
resources.router.routes.guidez.defaults.action = guidez 

pagination.item.count.per.page = 10

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
有人能发现问题吗?或者是否有人可以共享一个可用的application.ini


收到所有捐款,谨致谢意

您需要为someplace变量指定默认值。someplace是可变的,所以您需要给它一个默认值。否则,它将默认为取消定义。 我这样想:

resources.router.routes.place.defaults.someplace="deault_value"
在我看来,把你的url映射到确切的名字不是一个好主意。 因为url真的与应用程序结合在一起,所以它可以改变

我更喜欢在引导中使用通用路由器。然后将我的url映射到它。使用这种方法,我的路由系统与我开始一个新项目时是一样的。 在引导程序中使用这样的seomthing。它甚至比定义所有路线都要短 因为如果事情改变了,你就需要重新改变

protected function _initRoutes(){
    $front_controller=self::getFrontController();
    $router =  $front_controller->getRouter();

    $standard_route=new Zend_Controller_Router_Route(
        ':lang/:module/:controller/:action/:param_one/:param_two/:param_three/*',
        array(  'lang'=>$user_language,
                'module'=>'default',
                'controller'=>'index',
                'action' => 'index',
                'param_one'=>NULL,
                'param_two'=>NULL,
                'param_three'=>NULL
        )
    );
    $router->addRoute('standard', $standard_route);


    $default_route=new Zend_Controller_Router_Route(
        ':lang/:controller/:action/:param_one/:param_two/:param_three/*',
        array( 'lang'=>$user_language,
               'module'=>'default',
               'controller'=>'index',
               'action' => 'index',
               'param_one'=>NULL,
               'param_two'=>NULL,
               'param_three'=>NULL
        )
    );      
    $router->addRoute('default', $default_route);


    $front_controller->setRouter($router);


}

Lang是我自己的国际化支持变量。

您的配置是正确的。从错误判断,我相信您使用的参数是错误的

在默认模块中应该有一个名为DestinationController的控制器,并且至少要有这个控制器才能访问someplace变量

class DestinationController extends Zend_Controller_Action
{
    public function guideToAction()
    {
        var_dump($this->getRequest()->getParams());
        var_dump($this->getRequest()->getParam('someplace'));
        exit;
    }
}
这对我来说适用于您提供的配置


希望这能有所帮助。

有一件事需要记住:路线是按相反的顺序匹配的,因此请确保首先定义最通用的路线。我不认为这是你的问题,但我不确定,因为我不确定最重要的路线是第一条还是最后一条:)那是工作还是我埃文-很棒的工作!我只需要改变一点-添加了一个默认值-但现在我又回到了正轨!resources.router.routes.defaults.place.someplace=“deault\u值”