Zend Framework 1.12.16将用户重定向到特定操作

时间:2015-10-02 13:02:11

标签: php zend-framework

我正在使用Zend Framework版本1.12.16。我创建了两个模块,即用户和管理员。我在application.ini中启用了用户模块作为我的默认模块:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

resouces.modules[]=

resources.frontController.defaultModule = "user"

因此,每当用户在网址中输入网站名称时,他就会被自动用于在用户模块中对indexController的操作进行索引。同样,我希望每当用户在http://example.local/admin中键入时,用户都可以将loginController管理模块的操作编入索引。我可以使用application.ini中的某些设置来实现吗?

2 个答案:

答案 0 :(得分:0)

Zend只允许默认模块/控制器/操作的单一定义。在幕后,这将为Zend的路由系统创建一个默认路由。路由是您的问题的关键。为了匹配你的情况,你当然可以做一些动态/占位符/任何矫枉过正,但实际上你只需要一个简单的静态路由。这看起来像这样:

$route = new Zend_Controller_Router_Route_Static(
    'admin',
    array('module' => 'admin', 'controller' => 'login', 'action' => 'index')
);
$router->addRoute('admin', $route);

答案 1 :(得分:0)

谢谢Jossif !!我完全忘了这个选项。在Bootstrap.php类中添加以下方法解决了我的问题。

protected function _initRoutes()
{
    $frontController = Zend_Controller_Front::getInstance();
    $router = $frontController->getRouter();

    $route = new Zend_Controller_Router_Route_Static(
        'admin',
        array(
            'module' => 'admin',
            'controller' => 'login',
            'action' => 'index'
        )
    );

    $router->addRoute('admin', $route);
}