CakePHP – Маршрутизация с использованием префикса 'admin_'

В настоящее время я использую конфигурацию маршрутов торта, чтобы настроить виды администратора, отличные от настроек пользователя, не являющегося администратором. Я прочитал главу маршрутизации документации (торт) и наткнулся на маршрутизацию префикса. Который я думал, что это то, что мне нужно использовать, чтобы выполнить то, что мне нужно. Поэтому я начал его с настройки config / core.php, как было предложено, и раскомментировал это

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

Затем я добавил маршрут в route.php:

 Router::connect('/admin', array('controller' => 'donors', 'action' => 'index', 'admin' => true)); 

Из того, что я понял, с приведенным выше набором, я могу определить конкретное действие для администратора, такие имена, как admin_index или admin_view и т. Д.

Итак, у моего AppController есть компонент, подобный этому:

  public $components = array( 'DebugKit.Toolbar', 'Session', 'Auth' => array( 'loginRedirect' => array( 'controller' => 'donors', 'action' => 'index' ), 'authError' => 'Access Denied', 'logoutRedirect' => array( 'controller' => 'users', 'action' => 'login' ), 'authorize' => array('Controller') ) ); 

Поэтому, когда пользователь, не являющийся администратором, входит в систему, он должен быть перенаправлен на «доноры / индекс», а когда журнал входа в систему я хочу перенаправить его в «donors / admin_index». Как я могу это сделать?

Я попробовал это:

 public function beforeFilter(){ if(isset($this->params['admin'])){ $this->layout = 'stafflayout'; $this->Auth->loginRedirect = array( 'controller'=>'donors', 'action'=>'index', 'prefix'=>'admin', 'admin'=>true ); } 

И в процессе тестирования это, на первый взгляд, я, хотя это сработало. но URL-адрес не изменяется, как «donor / admin_index ..», и я все еще перенаправляюсь к донорам / индексу или эквиваленту, просто к / донорам … Почему это не работает?

(вторичный вопрос) Также во время тестирования этого я изменил свой контроллер и действия компонента Auth LoginRedirect на

«контроллер» => «» сообщений

а также

=> «Индекс» «действие»

другие «доноры», «индекс», и когда я вошел в систему, я все же перенаправлялся к донорам / индексу. Должно ли это перенаправить меня на «должности / индекс»,

Кто-нибудь может помочь мне по этим двум вопросам? Первичные вопросы важнее, хотя!

Ну код в порядке!

 Router::connect('/admin', array('controller' => 'donors', 'action' => 'index', 'admin' => true)); 

выше будет отображаться / donors / index page всякий раз, когда / admin записывается в url.

Теперь, если вы хотите добавить префикс like / donors / admin_index, вам нужно создать еще одно правило, например:

  Router::connect('/donors/admin_index', array('controller' => 'donors', 'action' => 'index', 'admin' => true)); 

и в функции beforeFilter

 if(isset($this->params['admin'])){ $this->layout = 'stafflayout'; $this->Auth->loginRedirect = array( 'controller'=>'donors', 'action'=>'admin_index', 'admin'=>true ); 

вышеуказанный код будет перенаправлен на / donors / admin_index, а маршрутизация будет отображать / доноры / индексную страницу