我知道这与www.example.com/class/function/ID/的形式并不完全一致,但我希望向用户展示的内容会更有意义。
这就是我想做的事情:
www.example.com/project/id/item/item_id/
所以,一个例子是:
www.example.com/project/5/item/198237/
这就是行为:
因此,每个项目都只与一个项目直接关联。
我能想到如何做到这一点的唯一方法是膨胀“项目”控制器并解析各种参数并控制来自该“项目”控制器的所有视图。我不想这样做,因为“项目”的模型和视图与“项目”的模型和视图真正分开。
唯一的其他解决方案(我目前正在实施并且不喜欢)是具有以下内容:
www.example.com/project/5/ www.example.com/item/198237 /
有没有办法建立一个分层URL,就像我在开始时展示的那样,没有让“项目”控制器膨胀?
答案 0 :(得分:1)
有3个选项,根据它们的实用程度排序:
这样的事情可以帮助你,routes.php
:
$route['project/'] = 'project/viewall';
$route['project/(.+)'] = 'project/view/$1';
$route['project/(.+)/item/'] = 'project/view/$1';
$route['project/(.+)/item/(.+)'] = 'item/view/$2';
也就是说,考虑您的控制器分别是项目和项目。另请注意,值中的$n
对应于第n个括号中匹配的部分。
ModRewrite
。您可以提出类似于routes.php
中的规则。如果你已经在使用这样的方法,那么使用它就不是一个坏主意,但只有当你已经在使用这样的东西时,最好是在Apache的情况下,在服务器配置而不是{{ 1}}文件。答案 1 :(得分:0)
您可以使用routes.php(在config文件夹中找到)来控制所有这些选项。您也可以使用URI类捕获任何URI段,如$this->uri->segment(2)
中所示。那就是你加载了URL助手。您可以默认加载autoload.php文件(也在config文件夹中)。