使用CodeIgniter通常必须在config / routes.php文件中指定控制器。 这不方便,所以我希望能够在控制器中做这样的事情。
它基本上模仿了routes文件的行为,但之前不需要指定通配符。我正在使用我随每个控制器扩展的基本控制器,但我想让这个控制器只加载(或包含)所需的控制器。
有没有人知道如何以一种好的方式做到这一点?
提前致谢。
//编辑
好的,这就是我的情景。
我有cms,用户可以选择包含模块(例如图库)。 我需要包含所有画廊的PHP脚本,而不必在网址中有“画廊”。 我认为如果我使用“主控制器”根据所选模块加载另一个控制器,它会工作。我意识到这可能不是最好的方式,所以如果有一个“干净”的方式,请告诉我。
据我所知,模型仅适用于数据库内容,因此将整个库放在那里也是不对的。插件本身当然是一个库,但是会有一些代码根据需求加载库,获取数据库数据等。
谢谢
答案 0 :(得分:0)
我可能误解了你的问题,但你想要加载控制器,如果你去了它们,如果不是你想要你的默认设置。
如果我理解正确,你可以在你的路线中做一些事情,有一条路线可以将一切都带到你的默认控制器。
在你的控制器中有一个所有控制器的数组,然后将数组内爆到正则表达式
$array = [c1, c2, c3, c4];
$str = implode('|', $array);
$regex = "($str)"
现在只需将正则表达式添加到路径
现在可以根据需要重定向。
但这就是路径文件对你来说真正的东西你只是在应该使用的东西上跳舞。
答案 1 :(得分:0)
你这样做的方式是不正确的。你永远不应该接管路由功能来做到这一点。您需要的是使用某种模块功能来包含所需的方法和模型;模块不需要具有路径可访问的方法,因此它基本上是一个带有模型和视图的“库”。
如果我没记错,有几个插件可以提供此功能,其中一个是HMVC
(google it)。
理想的形式是从控制器按需加载“模块”,就像使用核心CodeIgniter库一样;所以,假设您在博客控制器操作中,并希望包含comment
和gallery
上使用的images
模块,您只需包含模块并调用它的方法即可获取您可以根据需要传递给视图的数据;您甚至可以渲染部分并将它们存储到变量中以传递给主控制器。
希望这足以让你走上正轨:)