2013-03-25 1 views
0

Я этот код с маршрута (с использованием Kohana 3.3)Kohana 3.3 Маршрутизация в подкатегорий

Route::set('admin', '<directory>(/<controller>(/<action>))', array('directory' => '(admin)')) 
    ->defaults(array(
     'controller' => 'main', 
     'action' => 'index', 
    )); 

Route::set('default', '(<controller>(/<action>(/<id>)))') 
    ->defaults(array(
     'controller' => 'main', 
     'action' => 'index', 
    )); 

Когда я вхожу www.my_site/admin, он работает правильно.

Все пользователи должны быть аутентифицированы, поэтому я перенаправляюсь на контроллер, где это происходит.

public function before() { 
    parent::before(); 
    Controller::redirect('admin/users/login'); ... 

Однако, я получаю следующее сообщение об ошибке:

Kohana_HTTP_Exception [ 404 ]: The requested URL admin/users/login was not found on this server.

Как я могу сделать переадресацию/путь к www.my_site/admin/user/login?

+0

У вас есть пользовательский контроллер с методом 'action_login'? –

+0

Нет, у меня есть эта структура -Контроллер (папка) --admin (папка) --- пользователи (папка) ---- login.php (controller) с кодом 'code'class Controller_Admin_Users_Login ext ... .'code', где я буду обрабатывать – user2207401

ответ

0

Как уже упоминалось, контроллер и функция существуют?

Также будет рекомендовано создать URL для перенаправления через Route

$route = Route::get('admin')->uri(array(
    'controller' => '..', 
    'action' => '..', 
)); 
Controller::redirect($route); 
0

обновление ***

структура
-Controller (папка)
--admin (папка)
--- пользователи (папка)
---- login.php (контроллер)
class Controller_Admin_Users_Login ext...

kingkero ответил мне помог

$route = Route::get('admin')->uri(array(
      'directory' => 'admin', 
      'controller' => 'users_login', 
      'action' => 'index', 
)); 

Controller::redirect($route); 

но URL имеют вид www.my_site/администратор/users_login

мы можем иметь вид www.my_site/администратора/пользователей/логин?

P.S. Прошу прощения, если я хочу слишком много :)

+0

Существует ли конкретная причина, по которой ваш контроллер является 'users_login', вместо того, чтобы иметь« пользовательский »контроллер с действием« login »? – kero

+0

Эта архитектура приложения построена так, что каждое «событие» (логин, регистрация, профиль) должно выполняться в отдельном контроллере. И да, я понимаю разницу в этом случае, у меня будет первый взгляд на ссылки. Спасибо за помощь... – user2207401