【问题标题】:Zend Framework not include the default module in urlZend Framework 不在 url 中包含默认模块
【发布时间】:2013-04-17 19:40:40
【问题描述】:

我有一个具有这种结构的 ZF1.12 项目:

|Project
    |-Application
        |-configs
            |-application.ini
        |-modules
            |-default
                |-configs
                |-controllers
                |-models
                |-views
                |-Bootstrap.php
            |-api
                |-configs
                |-controllers
                |-models
                |-views
                |-Bootstrap.php
    |-Bootstrap.php
    |-Library
    |-Public

application.ini 中的模块配置

resources.modulesetup[] =
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultControllerName = "index"
resources.frontController.defaultAction = "index"
resources.frontController.defaultModule = "default"
resources.modules[] = ""

这些链接

$this->url(array('module'=>'default', 'controller'=>'index', 'action'=>'index'));
$this->url(array('module'=>'default', 'controller'=>'index', 'action'=>'one'));
$this->url(array('module'=>'admin', 'controller'=>'index', 'action'=>'index'));
$this->url(array('module'=>'admin', 'controller'=>'index', 'action'=>'two'));

在/project.com/返回

/project.com/                     ---> works
/project.com/                     ---> no module, no controller and no action...
/project.com/admin/               ---> works
/project.com/admin/               ---> no controller and no action...

和 /project.com/default/ 上的相同链接返回

/project.com/                     ---> works
/project.com/index/one            ---> doesn't work and return 404 error 
/project.com/admin/index/index    ---> works
/project.com/admin/index/two      ---> works

出了点问题,当然,我应该总是有同样的回报。 second 也给了我一个 404 错误。如果我把它放在地址中,我发现了类似 /project.com/default/index/one 的东西浏览器中的栏。

为什么 url() 方法不返回包含“默认”模块的 url?

【问题讨论】:

  • 是 /example 你想调用的模块吗?
  • /example 是项目的名称(域名)。像 www.example.com/module/controller/action.... 为什么它不返回域(示例)和控制器(索引)之间的模块?

标签: zend-framework url module default


【解决方案1】:

我有类似的设置,并使用自定义路线:

[routes]    
routes.mycustomroute.type = "Zend_Controller_Router_Route_Regex"
routes.mycustomroute.route = "([a-zA-Z]+)/([a-zA-Z]+)"
routes.mycustomroute.defaults.module = "default"
routes.mycustomroute.map.1 = controller
routes.mycustomroute.map.2 = action
routes.mycustomroute.reverse = "%s/%s/%s"

使用路线的一些好细节:action parameters routing not working in Zend framework routes.ini

但基本上,在您的引导程序中添加函数_initRoutes(来自上一个链接),并在/configs 下创建一个routes.ini 文件

--

此外,您可能还想查看$front->setParam('useDefaultControllerAlways', true);(请参阅文档http://framework.zend.com/manual/1.12/en/zend.controller.router.html)。但我不确定它的作用。

【讨论】:

  • 您能解释一下我应该如何自定义此设置吗?如果我把它放在 application.ini 的顶部,什么都不会改变......
  • 在您的 routes.ini 中,您是否在最顶部添加了 [routes]
  • 是的,我做到了......但什么也没有......我对这个问题要疯了:(
  • 不要链接默认路由,而是尝试创建一个新路由,所以上面会显示routes.mycustomroute.type
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 2012-04-23
相关资源
最近更新 更多