【问题标题】:Zend framework (1.7.5): how to change controller directoryZend 框架(1.7.5):如何更改控制器目录
【发布时间】:2009-02-26 20:28:50
【问题描述】:

使用 Zend Framework 我想使用存储在非默认目录中的控制器。

我想要实现的是,如果请求的路径以 admin/controls/admin 开头,则使用 layout/admin 和 views/admin 等。

我将如何以相当优雅的方式实现这一目标?

【问题讨论】:

  • 如果以下答案都不符合您的需求,请举一个更具体的例子,因为我没有完全得到您想要的。给出一个示例 URL 以及控制器、布局和视图文件的名称。从您当前的示例中,我只能确定控制器文件名。其他人没有。

标签: php zend-framework


【解决方案1】:
$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory(...path...);

或多条路径

$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory(array(
    'default' => '/path/to/application/controllers',
    'blog'    => '/path/to/application/blog/controllers'
));

http://framework.zend.com/manual/en/zend.controller.front.html

【讨论】:

  • 我赞成你,因为你是对的,但我选择了另一个答案作为选择的答案,因为我喜欢使用模块化目录结构的想法。我确实尝试过按照你说的做,结果发现我只是有点搞混了!
  • 我写的和 Brian Fisher 写的是一样的 ;) 我不在乎你选择了什么答案,我很高兴你解决了你的问题。 p.s. tnx 支持投票 ;)
  • 请注意:如果您在引导程序 _init*() 方法中调用 $front->setControllerDirectory,那么在获取前端控制器的实例之前调用 $this->bootstrap('FrontController'); 是明智的。 (我花了几个小时来处理我传递给 setControllerDirectory 的值似乎被神奇地覆盖的奇怪问题。
【解决方案2】:

您可以使用模块目录结构。创建目录结构

application
  default
    controllers
    views
    models
  admin
    controllers
    views
    models

有关更多信息,请查看Using a Conventional Modular Directory Structure 上的文档

【讨论】:

  • 嗨,如果这个答案能以某种方式与glavić's合并,那就太好了。我喜欢模块化目录结构并且现在正在使用它,但他的回答显示了如何让前端控制器知道模块的目录在那里。请编辑以包含此内容,我没有足够的代表!
猜你喜欢
  • 1970-01-01
  • 2012-04-22
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 2019-01-11
  • 1970-01-01
相关资源
最近更新 更多