php – Zend Framework中的简单重写

这似乎是一个非常简单的问题,但我只找到了复杂的答案.我有一个Zend Framework应用程序,需要用户登录. loginAction()和logoutAction()在AuthController中定义.我想允许用户通过http://www.example.com/login而不是http://www.example.com/auth/login登录.

我知道有很多方法可以做到这一点,我考虑的是:

> .htaccess重写
>创建LoginController并将indexAction()重定向到auth / login
>使用Zend_Controller_Router_Rewrite定义自己的路线.

如果可能的话,我宁愿把它排除在#1之外. #2很容易理解,虽然看起来像是一个黑客.它还可能会使用一堆5行“Controller”类来混淆代码.我认为#3是要走的路,但我不完全明白如何有效地使用它.我尝试过Using Zend_Config with the RewriteRouter虽然我只定义了登录路由,所以每个链接都变为’/ login'(我想我错过了一条默认路由).我在我的Bootstrap.php中做到了这一点,我不确定这是否正确.

我缺少一个简单的方法吗?我错误地使用了#3吗?我应该阅读这方面的教程吗? (我看过Zend文档很好,但我经常发现自己在问:’这个代码应该放在哪里:在控制器,模型,引导程序,其他?’)

对于一个明确的目的,就像你有一个“命名”路线将是最简单的方法.虽然有许多方法可以实现命名路由,但最简单的方法是将它放在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

把它放在你的引导程序中并没有错,它对我来说似乎不方便.
这样做也应该(无保证)防止默认路由出现任何问题.

使用url()帮助程序调用路由时,务必记住使用命名路由:

<?php echo $this->url(array(), 'routeName') ?>

或者如果你需要传递正常的’controller’=> ,’action’=> :

<?php echo $this->url(array('controller' => 'index', 'action' => 'index'), 'default') ?>

我可以告诉’default’在这个上下文中表示这将是Zend / Controller / Router / Route / Module.php中定义的默认路由

https://stackoverflow.com/questions/8966643/simple-rewrites-in-zend-framework

转载注明原文:php – Zend Framework中的简单重写