В настоящее время я использую конфигурацию маршрутов торта, чтобы настроить виды администратора, отличные от настроек пользователя, не являющегося администратором. Я прочитал главу маршрутизации документации (торт) и наткнулся на маршрутизацию префикса. Который я думал, что это то, что мне нужно использовать, чтобы выполнить то, что мне нужно. Поэтому я начал его с настройки 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, а маршрутизация будет отображать / доноры / индексную страницу