Вы можете использовать параметр переполнения в вашей конфигурации маршрутизации. Затем просто проанализируйте переполнение в вашем контроллере. Вот как я делаю это в моей начальной загрузке:
Route::set('default', '(<controller>(/<action>(/<overflow>)))', array('overflow' => '.*?'))
->defaults(array(
'controller' => 'widget',
'action' => 'index',
));
Затем я использую этот вспомогательный класс для получения параметра для определенного контроллера:
<?php defined('SYSPATH') or die('No direct script access.');
class UrlParam {
static public function get($controller, $name) {
$output = $controller->request->param($name);
if ($output) return $output;
if (isset($_GET[$name])) return $_GET[$name];
$overflow = $controller->request->param("overflow");
if (!$overflow) return null;
$exploded = explode("/", $overflow);
for ($i = 0; $i < count($exploded); $i += 2) {
$n = $exploded[$i];
if ($n == $name && $i < count($exploded) - 1) return $exploded[$i + 1];
}
return null;
}
static public function getArray($controller) {
$overflow = $controller->request->param("overflow");
if (!$overflow) return array();
$output = array();
$exploded = explode("/", $overflow);
for ($i = 0; $i < count($exploded); $i += 2) {
$n = $exploded[$i];
$output[$n] = $exploded[$i + 1];
}
return $output;
}
}