В файле Boorap.php Kohana 3.1 для моего проекта мне пришлось добавить это выше маршрута по умолчанию:
Route::set(
'custom',
function($uri) {
$uri = rtrim($uri, '/');
$asParts = @ explode('/',$uri);
$controller = @ $asParts[0];
$action = @ $asParts[1];
$param1 = @ $asParts[2];
$param2 = @ $asParts[3];
$param3 = @ $asParts[4];
$controller = str_replace('-','_',$controller);
$action = str_replace('-','_',$action);
$controller = (empty($controller)) ? 'home' : $controller;
$action = (empty($action)) ? 'index' : $action;
return array(
'controller' => $controller,
'action' => $action,
'param1' => $param1,
'param2' => $param2,
'param3' => $param3
);
}
);
Это позволяет мне делать следующие вещи:
- Тире в действии становится функцией в классе контроллера с подчеркиванием.Таким образом, «add-new» становится «action_add_new ()».
- Тире в контроллере становится подпапкой, потому что контроллер, естественно, в kohana подчеркивает подпапку.Итак, из-за функции str_replace (), указанной выше на контроллере, если у меня есть контроллер 'test1-test2', Кохана ищет папку контроллера 'test1', а затем файл контроллера 'test2.php'.Но подвох заключается в том, что ваш test2.php должен начинаться с того, что 'class Controller_Test1_Test2 extends Controller {'.
- И затем я также могу передать 3 оптимизированных для SEO параметра после URL, не используяболее уродливый? p1 = бла & p2 = бла & p3 = метод бла запроса параметров.Это объяснено больше здесь .