Zend框架:在controllers目录的子目录
-
18-09-2019 - |
题
我使用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
不隶属于 StackOverflow