用户配置文件路由配置在codeigniter中

时间:2013-04-21 12:48:52

标签: codeigniter codeigniter-2

我有一个简单的问题,但我无法弄清楚。我写了一个从url读取参数的方法(一个参数,即用户名),并查询该用户的所有数据并将其显示在页面中。

唯一的问题是该方法是控制器的一部分,当然它必须显示在url中(简单地说:不太好用于共享。另外我必须按如下方式编写字符串:

www.domain.com/controller/profile_guest?user=username

我想摆脱用户名前的所有内容。所以它显示为:

www.domain.com/username

现在有两种情况可供选择。

a)有人浏览目录,点击个人资料名称,然后重定向到个人资料页面。在那里,他喜欢他所看到的,他复制网址,并分享它。

b)有人收到共享链接并点击它,所以加载的是配置文件页面,其中收到的网址不是显示控制器和方法的完整链接。

这有可能实现吗?

感谢您的帮助:)

更新

$route['default_controller'] = "main/index";
$route['404_override'] = '';

1 个答案:

答案 0 :(得分:1)

你可以使用这条路线:

$route['(:any)'] = "controller/profile_guest/$1";

但是任何其他路线,您需要在此路线上手动编写。 例如:

$route['controller/view'] = "controller/view";
$route['(:any)'] = "controller/profile_guest/$1";

<强>说明:

路由按照它们在routes.php文件中的显示顺序进行处理,因此如果您将$route['(:any)']放在顶部,它将处理任何内容。

假设你有一个控制器和一个函数,你需要执行它,例如:www.domain.com/contoller/function,你不能执行你的函数,因为它将匹配这条路由$route['(:any)'],所以你需要在$route['(:any)']之前为它定义一条路线 例如:

$route['contoller/function'] = "controller/function"
$route['(:any)'] = "controller/profile_guest/$1";

并对所有控制器及其功能执行相同操作,但您必须将$route['(:any)']放在最后一条路径上。

相关问题