【问题标题】:How to point multiple controller url to same URL in codeigniter?如何将多个控制器 url 指向 codeigniter 中的相同 URL?
【发布时间】:2017-07-09 21:31:02
【问题描述】:

我正在使用 codeigniter 开发后端管理面板,在管理面板中有多个用户角色,如管理员、编辑器、经理等。 现在我为每个角色创建了多个控制器,例如:

  • 控制器/Admin.php
  • 控制器/Editor.php
  • 控制器/Manager.php

所以,URL变成了这样

  • www.mysite.com/admin/anyfunction
  • www.mysite.com/editor/anyfunction
  • www.mysite.com/manager/anyfunction

但我想要这些网址

  • www.mysite.com/u/anyfunction
  • www.mysite.com/u/anyfunction
  • www.mysite.com/u/anyfunction

【问题讨论】:

  • 您是否希望所有 URL 的网站后都有字母“u”?
  • 你需要合并你的控制器或者有不同的URL...
  • 'u' 不推荐,我只是想隐藏控制器名称
  • 您可以在每个控制器的顶部放置一个重定向,以检查用户是否具有访问该控制器的正确角色,如果没有,则将它们重定向到适当的控制器,例如 Admin.php在你的函数 if($user->editor) {redirect('editor/index')}if($user->manager) {redirect('manager/index')} 中,最终我建议你找到一个不同的结构,尽管它不需要所有这些重定向
  • 好的,我应该使用哪种结构?

标签: codeigniter url routes


【解决方案1】:

在您的场景中,函数名称必须不同。但是具有不同的函数名称,您可以将路由设置为

$route['u/any-method'] = "admin/any_method";
$route['u/some-other-method'] = "editor/any_method"; 

URL 需要不同以允许路由器类解析应该执行的代码部分。 在这里查看docs

【讨论】:

  • 是的,我知道,实际上我不想在 URL 中显示角色
【解决方案2】:

你想做这样的路由吗?

   $route['u/(:any)'] = "admin/method";
   $route['u/(:any)'] = "editor/method";

【讨论】:

  • 是的,我认为不可能
  • 这样可以吗? $route['u/(:any)'] = "$_SESSION['role']/method"; $route['u/(:any)'] = "$_SESSION['role']/method";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
相关资源
最近更新 更多