如何创建不覆盖其他控制器路由的Codeigniter路由? [英] how to create Codeigniter route that doesn't override the other controller routes?

查看:95
本文介绍了如何创建不覆盖其他控制器路由的Codeigniter路由?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的Codeigniter应用程序中有很多控制器,例如:Signup,Profile,Main等。



现在我想构建




  • 人们访问网址: example.com/signup ,我想使用默认路线来注册控制器

  • 网址: example.com/bobby.ariffin ,我想将此重定向到用户控制器,因为该网址未由我的应用中的任何控制器处理。



我已在我的 config / routes.php 中创建:

  $ route ['(:any)'] =user; 

,但会将应用程式中的所有路径改为「使用者



Codeigniter有没有任何简单的路由不会覆盖其他控制器路由?



Update- -



我有这个问题的简单regex,从: Daniel Errante的博客

  $ route ['^(?! ezstore | ezsell | login)。' =home / $ 0; 

其中ezstore,ezsell和login是您应用程序中控制器的名称。

解决方案

你必须明确定义所有这些路由。

  $ route ['signup'] =signup;否则您将始终在user_controller 
$ route ['(:any)'] =user / display / $ 1;

或类似的东西。他们是按顺序跑的,所以先定义的是先发生。所以如果你抓住(:任何),你将发送ANYTHING到该控制器。



还要记住,你可以使用正则表达式,所以如果你知道总是有一个'。',你可以测试。 / p>

I've got a lot controller in my Codeigniter apps, ex: Signup, Profile, Main, etc..

Now I want to build "User" controller.

what I want:

  • if people goes to url: example.com/signup, I want use default route to "Signup" Controller
  • if people goes to url: example.com/bobby.ariffin, I want to reroute this to "User" Controller because the url not handled by any Controller in my apps.

I had create this in my config/routes.php:

$route['(:any)'] = "user";

but it's override all the route in my apps to "User" Controller.

Is there any simple route for Codeigniter that doesn't override the other controller routes?

Update---

I've got simple regex for this problem, from: Daniel Errante's Blog

$route['^(?!ezstore|ezsell|login).*'] = "home/$0″;

where ezstore, ezsell, and login are the name of controller in Your Apps.

解决方案

You're going to have to explicitly define all of those routes. Otherwise you will always end up at the "user_controller".

$route['signup'] = "signup";
$route['(:any)'] = "user/display/$1";

or something similar. They are ran in order, so what ever is defined first, is going to happen first. So if you catch (:any), you're going to send ANYTHING to that controller.

Also keep in mind that you can use regular expressions, so if you know there is always going to be a '.' in there, you could test for that.

这篇关于如何创建不覆盖其他控制器路由的Codeigniter路由?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆