s_s*_*_s_ 6 php zend-framework zend-route
我在这里尝试创建网址,如:
/admin/login
/moderator/login
Run Code Online (Sandbox Code Playgroud)
请求将由相同的控制器和为登录做出的动作提供,即 /account/login/<type>
目前,我可以制作以下网址:
/login/admin
/login/moderator
我当前的配置文件如下所示:
resources.router.routes.login.route = "login/:type"
resources.router.routes.login.defaults.controller = "account"
resources.router.routes.login.defaults.action = "login"
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚,关于如何将type变量放在URL的开头,我试过但它给出了服务器错误.
编辑
我完成了这个,但无法理解为什么这不能更早地工作:
resources.router.routes.login.route = ":type/login"
resources.router.routes.login.defaults.controller = "account"
resources.router.routes.login.defaults.action = "login"
Run Code Online (Sandbox Code Playgroud)
编辑
是否有可能使这种安排更加灵活,以便:
/login=>/admin/login
我不是通过.htaccess寻找解决方案
将以下内容添加到您的 Bootstrap.php
function _initRoutes() {
$front_controller = Zend_Controller_Front::getInstance();
$router = $front_controller->getRouter();
$router->addRoute('login', new Zend_Controller_Router_Route(
'/:type/login', array('controller' => 'account', 'action' => 'login')
));
}
Run Code Online (Sandbox Code Playgroud)
从您的 loginAction() 使用:
$this->getRequest()->getParam('type');
Run Code Online (Sandbox Code Playgroud)
简单的?