使用 Zend_Controller_Router_Route 为 IndexController 中的操作创建友好的 URL
在我的 IndexController 中,我目前有indexAction(主页)、loginAction 和 logoutAction。我正在尝试从 URL 中删除“/index/”以获取domain.com/login 而不是domain.com/index/login。
实现这一目标的最干净的方法是什么?有我们可以使用的正则表达式吗?我不想在 URL 中包含 /index/ 。
我目前的解决方案如下,我相信可以对其进行改进。另外,addRoute() 中的第一个参数是做什么的?
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initViewHelpers()
{
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$router->addRoute('login',
new Zend_Controller_Router_Route('login/*', array(
'controller' => 'index',
'action' => 'login'
))
);
$router->addRoute('logout',
new Zend_Controller_Router_Route('logout/*', array(
'controller' => 'index',
'action' => 'logout'
))
);
}
}
In my IndexController, I currently have indexAction (homepage), loginAction and logoutAction. I'm trying to remove "/index/" from the URL to get domain.com/login instead of domain.com/index/login.
What is the cleanest way to achieve this? Is there a RegEx we can use? I don't ever want /index/ in the URL.
My current solution, which I believe can be improved upon, is below. Also, what does the first parameter in addRoute() do?
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initViewHelpers()
{
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$router->addRoute('login',
new Zend_Controller_Router_Route('login/*', array(
'controller' => 'index',
'action' => 'login'
))
);
$router->addRoute('logout',
new Zend_Controller_Router_Route('logout/*', array(
'controller' => 'index',
'action' => 'logout'
))
);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没有什么可以改进的,你必须为每个动作创建路线。这将允许您更改路由默认值(模块/控制器/操作),而无需修改代码。
第一个参数是路由名称,您必须在视图中将其与 url() 帮助器一起使用:
更新。如果您只想要一个 url 中没有“index”的路由,则可以使用这样的路由:
There is nothing to impove, you have to create route for every action. This will allow you to change route defaults (module/controller/action) without modifying your code.
First parameter is the route name, which you have to use with url() helper in your views:
Update. You can use such route, if you want only one route without "index" in url: