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

Zend Framework 1.12.16 redirect user to specific action

我使用的是 Zend Framework 版本 1.12.16。我创建了两个模块,即用户和管理员。我已通过在 application.ini:

中启用它来将用户模块设置为我的默认模块
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

resouces.modules[]=

resources.frontController.defaultModule = "user"

因此,每当用户使用 url 中的站点名称时,他都会自动进入用户模块中 indexController 的索引操作。同样,只要用户输入 http://example.local/admin,我希望用户被带到管理模块 loginController 的索引操作。我可以使用 application.ini 中的一些设置来实现吗?

Zend 只允许默认的单个定义 module/controller/action。在幕后,这会在 Zend 的路由系统中为您创建一个默认路由。路由是您问题的关键。为了匹配您的情况,您当然可以做一些 dynamic/placeholder/whatever 矫枉过正,但实际上您只需要一个简单的静态路由。这看起来像这样:

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

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

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);
}