0

我将 HMVC 与 CI 最新版本一起使用,并且我想将 HMVC 的所有模块路由到控制器 CI

如果我使用

$route[‘admin/(:any)’] = “admin/”;
$route[’(:any)’] = “index/index/$1”;
$route[’(:any)/(:any)’] = “index/index/$1/$2”;
$route[’(:any)/(:any)/(:any)’] = “index/index/$1/$2/$3”;

不是解决方案,因为一个 url 可以有很多段

我想路由控制器、方法和所有参数,如下所示:

$route[’(:any)/(:any)/ *all parameters *’] = “index/index/$1/$2/ *array($parameters)*”;

或者如何停止 HMVC 的路线,我不需要 HMVC 的路线。

请帮忙。

谢谢,乔恩。

4

1 回答 1

0

您不需要路由,codeigniter 已经这样做了。

从全新的 CI 安装开始,使用welcome控制器:

public function index()
{

    $args = $this->uri->uri_to_assoc();

    echo "<pre>";

    print_r($args);

    echo "</pre>";

    // $this->load->view('welcome_message');
}

访问[http://localhost/codeigniter2.1.2/index.php/welcome/index/param1/param1_value/param2/param2_value/param3/etc]

产生这个:

Array
(
[param1] => param1_value
[param2] => param2_value
[param3] => etc
)

所以你有你的控制器 [welcome],你的函数 [index] 和后面的所有东西都是参数;无需弄乱路由。


您不需要考虑可能路由的每个可能参数。

您可以使用这样的路线:

$route[‘admin/(:any)’] = “admin/”;
$route[’(:any)/(:any)/(:any)’] = “index/index/$1/$2/$3”;

然后每个 URL 除了admin/*将被路由到index/index. 从那时起,您可以获取我在上面发布的参数或通过您想要的段$this->uri->segment(n);在哪里n(因此,将从上面的路线$this->uri->segment(3)返回)。$1

于 2012-11-05T22:00:55.753 回答