codeigniter маршрутизация (регулярное выражение) - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь перенаправить URL следующим образом:

domain.com/param/some_controller/method/

сопоставлено с

some_controller::method($param)

Я не разбираюсь в регулярных выражениях, которые, я уверен, необходимы, поэтому я был бы очень признателен, если бы кто-то мог помочь мне начать? Или укажите мне хороший учебник или пример?

Ответы [ 3 ]

2 голосов
/ 22 июня 2011
$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>
1 голос
/ 22 июня 2011

Это немного грязно, потому что в настоящее время нет способа сделать это с маршрутизацией, не путая вещи. Вы можете попробовать это:

$route['([^/]+)/([^/]+)/([^/]+)'] = "$2/$3/$1";

НО это говорит о том, что оно будет применяться к ЛЮБОМ URL: это может сбить с толку обычные контроллеры. Вам лучше добавить префикс для определения запросов, которые вы должны обработать по этому маршруту: например

$route['a/([^/]+)/([^/]+)/([^/]+)'] = "$2/$3/$1";
0 голосов
/ 22 июня 2011

Тот же эффект, но в стиле Codeigniter:

//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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...