我使用Zend框架为我的网站,并就创建了一个特殊模块“API”创建......好吧,一个API。

现在,我有很多的控制器我的模块中,我想,以创造在这个控制器目录的子目录“整洁”吧。我的新的结构是这样的:

 - controllers/
 - controllers/contents/[controllers]
 - controllers/users/[controllers]
 - controllers/misc/[controllers]

不过,我发现自己完全无法找到什么样的使用Zend_Controller_Router_Route中可以映射到这些控制器的URL和重定向的。是否有可能做到这一点不知何故,或者我应该只是回到正常结构,把我的所有控制器在同一目录?


我尝试使用隔板_如通过smack0007建议和,因为它似乎给予逻辑Zend框架通常如何指子目录,但我得到一个错误。


编辑:删除,因为它是不相关的问题,因为这只是一个问题,因为我没有使用黑白配的情况下,相信我不得不把一个大写的目录的第一个字母长的错误文本。现在一切运作良好。

有帮助吗?

解决方案

我在项目做到了这一点早在1.5版本,但我不知道这是否正常工作了。

您有前缀的控制器“{FOLDER} _”,然后在URL中使用的全名。

所以你的情况,你将有一个名为控制器:

contents_FooController

和路线:

/contents_foo/index

其他提示

我试图完成的网址多层次的旧应用程序,并避免使用大量的URL roules的。 因此,我认为有关分组控制器到子目录并限定用于它的URL柔乐。

有关的结构

modules
 --test
   --controllers
     --sub
        -- OtherController.php
     --DefaultController.php

在我添加模块的bootstrap.php中:

public function __construct($application)
    {
        parent::__construct($application);
        $frontController = Zend_Controller_Front::getInstance();
        $frontController->addControllerDirectory(__DIR__ . '/controllers',
            'test');
        $frontController->addControllerDirectory(__DIR__ . '/controllers/sub',
            'test_sub');
    }

DefaultController.php是

class Test_DefaultController extends Zend_Controller_Action {
     public function subAction()
    {
         $level1 = $this->getRequest()->getParam('level1');
         $level2 = $this->getRequest()->getParam('level2');
         return $this->_forward($level2, $level1, 'test_sub');
    }

因此,这将转发给我们的控制器中的子目录。

最后,添加的路线:

new Zend_Controller_Router_Route_Regex('([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)',
    array(),
    array(1 => 'module', 2 => 'controller', 3 => 'action', 4 => 'level1', 5 => 'level2'),
    '%s/%s/%s/%s/%s'
)

与请求测试/默认/分/其他/索引现在,可以调用在OtherController.php所述的indexAction

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top