CodeIgniter. Как получить имя контроллера и метода.
24 Окт 2009
Получить имя текущего контроллера и метода в CodeIgniter очень просто. Достаточно извлечь информацию из соответствующего сегмента строки URI. Это позволяют делать функции класса URI: segment(n) и rsegment(n). Класс URI инициализируется автоматически. А функция rsegment отличается от segment тем, что rsegment позволяет извлечь указанный сегмент из перенаправленного сегмента URI, в случае использования функционала URI роутинга фреймворка.
Итак, мы знаем, что имя контроллера расположено в первом сегменте URI строки, а имя метода – во втором:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php // получаем имя текущего контроллера $controller_name = $this->uri->rsegment(1); // получаем имя текущего метода $method_name = $this->uri->rsegment(2); ?> |
Вообщето для этого у роутера есть спец. функции…
$this->router->fetch_class();
$this->router->fetch_method();
А зачем в данном случае через сегменты работать?
http://SITE.RU/index.php/activate/user/123/1111111111
activate – контроллер
user – метод контроллера activate
Все, что идет дальше – это параметры метода user.
Т.е. в Вашем случае надо строку запроса упростить до
и
function User($id, $key)
{
echo $id; // 123
echo $key; // 1111111111
}
Добрый день!
я пробовал делать так,есть строка запроса:
http://SITE.RU/index.php/activate/user/id/123/key/1111111111
в контроллере описано:
load->library(‘uri’);
}
function Index()
{
}
function User()
{
#$_id = $this->uri->segment(3,0);
#$_key = $this->uri->segment(5,0);
$data['content'] = print_r($this->uri->uri_to_assoc(3),TRUE);
$this->load->view(‘main_view’, $data);
}
}
в результате массив пустой
если брать посегментно то тоже пусто
не пойму в чем причина
не подскажите?