2014-01-10 2 views
4

Я занимаюсь разработкой веб-сайта с использованием CI, и сегодня я столкнулся с проблемой в админ-части.CodeIgniter Routing - 404 error

Я админ, и я могу управлять пользователями

структура моего приложения:

controllers/admin/users.php 

в users.php Я некоторые функции: index(), view($id), login(), edit($id)

views/admin/users/index.php 
views/admin/users/view.php 
views/admin/users/login.php 
views/admin/users/edit.php 

для доступа к странице входа в систему:

www.mysite.com/admin/login 

для доступа к списку пользователей URL-адрес является:

www.mysite.com/admin/users 

для просмотра конкретного пользователя (id=5) URL-адрес является: www.mysite.com/admin/users/5

все хорошо работает для функции редактирования, кроме, я получил URL когда я называю www.mysite.com/admin/edit/5

здесь мои правила маршрутизации:

$route['admin/users/(:any)'] = 'admin/users/view/$1'; 
$route['admin/users'] = 'admin/users'; 

$route['admin/users/login'] = 'admin/users/login'; 

$route['admin/users/edit/(:num)'] = 'admin/users/edit/$1'; 

$route['admin'] = 'admin/users/login'; 

Мне что-то не хватает? что не так?

+0

Возможно, вы захотите посмотреть переназначение вызовов функций. http://ellislab.com/codeigniter%20/user-guide/general/controllers.html#remapping Это поможет вам избежать использования маршрутизации. – andershagbard

ответ

2

Попробуйте положить его выше в последовательности, так как маршрут подбирается сверху вниз:

$route['admin'] = 'admin/users/login'; 
$route['admin/users'] = 'admin/users'; 
$route['admin/users/login'] = 'admin/users/login'; 
$route['admin/users/edit/(:num)'] = 'admin/users/edit/$1'; 
$route['admin/users/(:any)'] = 'admin/users/view/$1'; 

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

+0

работает отлично! molte grazie Damien! – user3129131

+0

Прего! :) Если вы обнаружите, что этот ответ решает вашу проблему, пожалуйста, подумайте о том, чтобы обозначить его как «принятый», используя толстую метку под подсчет голосов, поэтому, чтобы показать любому будущему читателю решение проблемы –

0
$route['admin/users/(:any)'] = 'admin/users/view/$1'; 
$route['admin/users'] = 'admin/users'; 

$route['admin/users/login'] = 'admin/users/login'; 

$route['admin/edit/(:any)'] = 'admin/edit/view/$1'; 

$route['admin'] = 'admin/users/login'; 

Попробуйте это Вы могли бы получить результаты!

+0

нет, это не сработает. – user3129131