nac*_*ito 3 php zend-framework url-rewriting
这似乎是一个非常简单的问题,但我只找到了复杂的答案.我有一个Zend Framework应用程序,需要用户登录.在loginAction()和logoutAction()中定义AuthController.我想允许用户通过http://www.example.com/login登录,而不是http://www.example.com/auth/login.
我知道有很多方法可以做到这一点,我考虑过的是:
如果可能的话,我宁愿把它排除在#1之外.#2很容易理解,虽然看起来像是一个黑客.它还可能使用一堆5行"Controller"类来混乱代码.我认为#3是要走的路,但我不完全明白如何有效地使用它.我尝试过将Zend_Config与RewriteRouter一起使用虽然我只定义了登录路由,所以每个链接都变为'/ login'(我想我错过了一个默认路由).我在我的Bootstrap.php中做到了这一点,我不确定这是否正确.
我缺少一个简单的方法吗?我错误地使用了#3吗?我应该阅读这方面的教程吗?(我看过Zend文档很好,但我经常发现自己在问'这个代码应该放在哪里:在控制器,模型,引导程序,其他?')
Roc*_*ord 10
对于一个定义的目的,就像你有一个"命名"路线将是最简单的方法.虽然有许多方法可以实现命名路由,但最简单的方法是将它放在application.ini中:
// /application/configs/application.ini
resources.router.routes.login.route = /login
resources.router.routes.login.defaults.module = default
resources.router.routes.login.defaults.controller = auth
resources.router.routes.login.defaults.action = login
Run Code Online (Sandbox Code Playgroud)
把它放在你的引导程序中并没有错,它对我来说似乎并不方便.
这样做也应该(不保证)防止默认路由出现任何问题.
使用url()帮助器调用路由时,务必记住使用命名路由:
<?php echo $this->url(array(), 'routeName') ?>
Run Code Online (Sandbox Code Playgroud)
或者如果你需要传递正常的'controller'=>,'action'=>:
<?php echo $this->url(array('controller' => 'index', 'action' => 'index'), 'default') ?>
Run Code Online (Sandbox Code Playgroud)
接近我在这个上下文中可以告诉'default'表示这将是Zend/Controller/Router/Route/Module.php中定义的默认路由