Zend框架(1.7.5):如何更改控制器目录

4
使用Zend Framework,我希望使用存储在非默认目录中的控制器。
我的目标是,如果请求的路径以admin/开头,则使用controllers/admin,layout/admin和views/admin等。
我该如何以合理优雅的方式实现这一点?

如果以下答案都不符合您的需求,请给出一个更具体的示例,因为我没有完全理解您想要什么。请提供一个示例URL以及用于控制器、布局和视图文件的名称。从您当前的示例中,我只能确定控制器文件名,其他的无法确定。 - Ionuț G. Stan
2个回答

6
$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


我点赞你是因为你说得对,但我选择另一个答案作为被选中的答案,是因为我喜欢使用模块化目录结构的想法。实际上,我确实尝试了你所说的方法,结果发现我只是把路径搞混了一点! - Robin Barnes
我写的和Brian Fisher写的是一样的 ;) 我不在乎你选择了什么答案,我只是很高兴你解决了问题。附言:感谢你的投票;) - Glavić
注意:如果您在引导程序_init*()方法中调用$front->setControllerDirectory,则在获取前端控制器实例之前调用$this->bootstrap('FrontController');是明智的。(我花了几个小时处理奇怪的问题,其中我传递给setControllerDirectory的值似乎被神奇地覆盖了)。 - JW.

4
您可以使用模块目录结构。创建目录结构。
application
  default
    controllers
    views
    models
  admin
    controllers
    views
    models

欲了解更多信息,请参阅 使用传统模块化目录结构 文档。


嗨,如果这个答案能够与Glavić的答案合并,那就太好了。我喜欢这个模块化目录结构,并且现在正在使用它,但他的答案展示了如何让前端控制器知道模块目录的存在。请编辑以包括此内容,我没有足够的声望! - Robin Barnes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接