У меня есть приложение, которое по существу работает, пока я не попытался реализовать модуль Auth для входа и регистрации.
Структура каталога моего приложения в основном:
application
-- classes
-- controller
-- admin
(admin area)
-- block
(blocks to display within pages)
-- page
(default pages)
По умолчанию я хочу иметь URL-адреса, такие как http://www.testsite.com/test, которые будут обращаться к классу Controller_Page_Test. Или явным образом вызвать администратора или заблокировать страницы http://www.testsite.com/admin/test, которые будут обращаться к классу Controller_Admin_Test. Чтобы еще больше усложнить ситуацию, он также должен обрабатывать необязательные действия и идентификаторы.
Я сказал сверху, что это в основном работает правильно - пока я не попытался добавить модуль Auth. Модуль Auth вызывает http://www.testsite.com/user/login, но вместо доступа к пути модуля по умолчанию он ищет в каталоге страниц.
Чтобы преодолеть это, я разместил маршрут более высокого уровня, но теперь он стал моим обработчиком страниц по умолчанию. Явные звонки все еще проходят.
Мои маршруты сейчас выглядят так:
Route::set('user', '(<controller>(/<action>(/<id>)))', array('controller' => 'user|admin_user'))
->defaults(array(
'controller' => 'user',
'action' => 'index',
'id' => NULL,
));
Route::set('with_dir', '<directory>/<controller>(/<action>(/<id>))', array('directory' => 'block|admin'))
->defaults(array(
'directory' => 'page',
'controller' => 'home',
'action' => 'index',
));
Route::set('just_id', '<controller>(/<id>)', array('id' => '\d+'))
->defaults(array(
'directory' => 'page',
'controller' => 'home',
'action' => 'index',
));
Route::set('auto_dir', '<controller>(/<action>(/<id>))', array('id' => '\d+'))
->defaults(array(
'directory' => 'page',
'controller' => 'home',
'action' => 'index',
));
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'prototype',
'action' => 'index',
));
Можно ли это лучше убрать? И как мне заставить этот модуль включаться только тогда, когда он мне нужен?