Извините за то, что я немного тупой, но я пытаюсь учиться и
смотрел на это в течение нескольких дней, но я все еще не совсем
уверен, как это работает. Я слежу за офлайновым руководством по использованию
префиксы.
учебник говорит:
1 - раскомментируйте префикс маршрутизации администратора в core.php
2 - добавить следующее в users_controller.php:
public function dashboard() {
$role = $this->Auth->user('role');
if (!empty($role)) {
$this->redirect(array($role=>true, 'action'=>'dashboard'));
}
}
public function admin_dashboard() {
}
public function manager_dashboard() {
}
3 - создать три вида для вышеупомянутого
4 - в app_controller добавить компоненты авторизации и сеанса с
соответствующие настройки, затем добавьте:
public function isAuthorized() {
$role = $this->Auth->user('role');
$neededRole = null;
$prefix = !empty($this->params['prefix']) ? $this-
>params['prefix'] : null;
if (!empty($prefix) && in_array($prefix,
Configure::read('Routing.prefixes'))) {
$neededRole = $prefix;
}
return (empty($neededRole) || strcasecmp($role, 'admin') == 0 ||
strcasecmp($role, $neededRole) == 0);
}
5 - в макете по умолчанию:
<?php
$dashboardUrl = array('controller'=>'users', 'action'=>'dashboard');
if (!empty($user['role'])) {
$dashboardUrl[$user['role']] = true;
}
echo $this->Html->link('My Dashboard', $dashboardUrl);
?>
Теперь все это работает, и я могу следить за большинством событий, но
Я запутался с последней строкой в методе isAuthorized. Какие
точно делает:
return (empty($neededRole) ||
strcasecmp($role, 'admin')== 0 ||
strcasecmp($role, $neededRole) == 0);
на самом деле вернуть?
Кроме того, приведенный выше код работает нормально, и когда я вхожу в систему под именем
admin они могут просматривать admin_dashboard нормально, но там после кажется
любая другая ссылка имеет префикс администратора. Как мне остановить это? я
не хочу создавать метод admin_ для всего, включая
домашняя страница!.