CodeIgniter路由:在控制器之前传递参数并将其捕获到default_controller上

时间:2014-01-27 21:31:53

标签: php codeigniter url-routing

我正在使用控制网站布局的网站范围参数。此参数在URL中的任何其他位置之前,后跟通常的控制器/参数部分。

mywebsite/{section}/controller/parameter1/parameter2

我可以为每个控制器定义类似下面的路径,但是希望避免它,因为 section 参数仅与布局相关,而不是与控制器相关。

$route['(:any)/controller/(:any)/(:any)'] = 'controller/$2/$3/$1';

相反,我希望能够使default_controller捕获第一个段并将其存储为视图变量或会话/ cookie,以便其余控制器可以忽略它。

$route['(:any)/controller/(:any)/(:any)'] = 'controller/$2/$3';

1 个答案:

答案 0 :(得分:2)

正如Hashem Qolami所述,使用sessioncookie可以提供更好的效果。

CodeIgniter中的路由不会改变URL。它允许您更改CI对URL的作用。您可以使用服务器端功能来执行您想要的操作(例如,apache重写,nginx conf等),但这不在此范围内。


编辑:

要在不更改URL的情况下执行您想要的操作,您只需将值传递给视图:

控制器:

$layout = $this->uri->segment(1);
$data["layout"] = $layout;
$this->load->view("cool_view", $data);

cool_view.php:

    <link rel="stylesheet" type="text/css" href="<?php echo $layout; ?>.css">