2009-10-30 3 views
2

В core.php я могу определитьcakephp Почему у меня нет маршрута администратора и маршрута суперпользователя?

Configure::write('Routing.admin', 'admin'); 

и/администратора/контроллер/индекс будет работать.

, но если я определяю как

Configure::write('Routing.admin', 'admin'); 
Configure::write('Routing.superuser', 'superuser'); 

и попытаться взглянуть на/суперпользователя/бла/индекса/вместо этого говоря, что контроллер не существует, он говорит

Error: SuperuserController could not be found. 

вместо того, чтобы говорить

Error: BlahController could not be found. 

Когда я впервые прочитал документацию, я был под впечатлением, я мог запускать оба маршрута, и не только один или другой. Есть что-то еще, что мне нужно сделать?

ответ

4

Я считаю, что они работают над этим для CakePHP 1.3, но пока нам нужно обмануть, чтобы выполнить дополнительную маршрутизацию. Это метод, который я использовал в прошлом.

// SuperUser Routing 
Router::connect('/superuser/:controller', 
    array('prefix' => 'superuser', 'superuser' => true)); 
Router::connect('/superuser/:controller/:action/*', 
    array('prefix' => 'superuser', 'superuser' => true)); 

Были некоторые проблемы, порождающие URL-адрес с помощью метода array('controller' => ...), но я не касался этого проекта в течение нескольких месяцев, так что я не могу вспомнить все предостережения с ним. Это должно хотя бы дать вам отправную точку.

CakePHP document explains this some. Соответствующий раздел начинается примерно наполовину в разговоре о нескольких префиксах.

+0

Это работает. Я должен буду следить за теми вопросами, которые вы упомянули. –

+0

Я думаю, что это было связано с явным необходимостью устанавливать «префикс» => ложь или что-то в этом роде, когда вы использовали маршрут и использовали массив для URL-адреса. – Jason

0

Если вы используете трюк Джейсона, и возникли проблемы с генерацией URL, используя массив синтаксиса («контроллер» => ...), то это в вашем AppController:

if (isset($this->params['prefix']) && $this->params['prefix'] == 'superuser') {      Configure::write('Routing.admin', 'superuser');
}

Этого заставляет appcontroller использовать правильный префикс администратора, который в этом случае является «суперпользователем».

Смежные вопросы