更新:已解决!对于破碎的页面,我只是做了一个管理控制器。现在每个模型都有一个功能:)快乐的日子!
尝试将我的管理功能存放在与我的前端代码相同的控制器中。为此,我正在设置一些自定义路由,以便可以通过以下方式访问管理员:
/admin/controller/id // instead of /controller/admin/id
/admin/controller/create // instead of /controller/create
/admin/controller/detail/id // instead of /controller/detail/id
/admin/controller/update/id // instead of /controller/update/id
/admin/controller/delete/id // instead of /controller/delete/id
我当前的路线非常适合细节,创建,更新,删除
$route['admin/(:any)/detail'] = "$1/detail"; // WORKS!!!
$route['admin/(:any)/detail/(:num)'] = "$1/detail/$2"; // WORKS!!!
$route['admin/(:any)/create'] = "$1/create"; // WORKS!!!
$route['admin/(:any)/create/(:num)'] = "$1/create/$2"; // WORKS!!!
$route['admin/(:any)/update'] = "$1/update"; // WORKS!!!
$route['admin/(:any)/update/(:num)'] = "$1/update/$2"; // WORKS!!!
$route['admin/(:any)/delete'] = "$1/delete"; // WORKS!!!
$route['admin/(:any)/delete/(:num)'] = "$1/delete/$2"; // WORKS!!!
然而,我无法让管理页面使用ID。我可以重新路由索引页面,但如果我无法传递ID,则无法使用分页。
$route['admin/(:any)'] = "$1/admin"; // WORKS!!!
$route['admin/(:any)/(:num)'] = "$1/admin/$2"; // EPIC FAIL :( 404's
有人可以帮我解决这个问题,甚至建议一个替代的应用程序结构解决方案。
答案 0 :(得分:4)
确保你的正则表达式路由(包括带有:num和:any的路由)必须在default_controller路由之后。
有关创建合适管理面板的更多方法,请查看我在creating an admin panel in CodeIgniter上的文章。有三种不错的方法可以做到这一点,本文解释了每种方法的优点和内容。
答案 1 :(得分:0)
如果您的管理员很复杂,并且您需要多个控制器,则只需在application / controllers文件夹中创建一个admin文件夹即可。然后将管理控制器放入其中。
因此,application / controllers / admin / login将像http://example.com/admin/login
一样工作答案 2 :(得分:0)
旧问题已经有一个已接受的答案,但我认为如果你在第一个RegEx中包含一个行尾锚点,你的设置会正常工作:
$route['admin/(:any)/(:num)$'] = "$1/admin/$2"; // EPIC FAIL :( 404's
^^^
否则您打算用第二个RegEx捕获的网址将被您的第一个RegEx拦截。