我試圖路由器的URL如下:笨路由(正則表達式)
domain.com/param/some_controller/method/
映射到
some_controller::method($param)
我不是熟練使用正則表達式,這是我我相當肯定有必要,所以如果有人能幫助我開始,我將不勝感激。或者讓我指出一個好的教程或例子?
我試圖路由器的URL如下:笨路由(正則表達式)
domain.com/param/some_controller/method/
映射到
some_controller::method($param)
我不是熟練使用正則表達式,這是我我相當肯定有必要,所以如果有人能幫助我開始,我將不勝感激。或者讓我指出一個好的教程或例子?
同樣的效果,但笨風格:
//remember that custom routes need to go _after_ ci's default routes, as they're executed in the order you provide them
$route['default_controller'] = "welcome";
$route['404_override'] = '';
//exception 1 to your regex here
//exception 2 to your regex here
//so on...
$route['(:any)/(:any)/(:any)'] = "$2/$3/$1";
這有點麻煩,因爲目前沒有辦法做到這一點與路由沒有混淆的事情。你可以試試這個:
$route['([^/]+)/([^/]+)/([^/]+)'] = "$2/$3/$1";
但是這就是說它適用於任何網址:這會混淆正規的控制器。您行走更好地加入一些前綴標識,你應該用這條路線處理請求:例如
$route['a/([^/]+)/([^/]+)/([^/]+)'] = "$2/$3/$1";
$route['(:any)/some_controller/method/'] = "some_controller/method/$1";
如果你的參數是一個數改爲使用(:num)
。
function method($my_param) {
echo 'my param is '. $my_param;
}
的RL例如:
$route['(:num)/blog/entry/'] = "blog/view/$1";
class Blog extends CI_Controller {
function view($id) {
echo 'fetching blog entry no ' . $id;
}
}
你的觀點會像
view.php
<html>
<body>
link to <?= anchor('1/blog/entry/','my first post'); ?>
link to <?= anchor('2/blog/entry/','my second post'); ?>
</body>
</html>
是'domain.com/param/some_controller/method /'這是popul的字符串變成了一個特定的變量?就像,我可以假設'http(s)://協議永遠不會在那裏,字符串將始終是在那個確切的格式,或不? (我對CI不熟悉) – Wiseguy
@Wiseguy - 所有這些都由CI處理,並且還有一些重寫規則,所以url是_actually_' domain.com/index.php?param/some_controller/method' – tbridge