Я использую плагины CakeDC Users и ACL в своем приложении CakePhp. У меня есть разные роли для моих пользователей в моем приложении, и я хотел бы иметь разные панели мониторинга на основе ролей после входа в систему.
Я расширяю плагин своей собственной таблицей и контроллером на основе документации здесь, поэтому у меня есть MyUsersController и MyUsersTable, которые переопределяют исходные файлы плагина, UsersController и UsersTable. Все работает нормально. Я создаю событие в своем файле events.php, который содержит:
use CakeDC\Users\Controller\Component\UsersAuthComponent;
use Cake\Event\Event;
use Cake\Event\EventManager;
EventManager::instance()->on(
UsersAuthComponent::EVENT_AFTER_LOGIN,
['priority' => 99],
function (Event $event) {
if ($event->data['user']['role_id'] === 'bbcb3031-ebed-445e-8507-f9effb2de026') //the id of my client role{
return ['plugin' => 'CakeDC/Users', 'controller' => 'MyUsers', 'action' => 'index', '_full' => true, 'prefix' => false];
}
}
);
Но похоже, что переопределение не работает, потому что у меня есть ошибка:
Ошибка: CakeDC/Users.MyUsersController не найден.
В моем URL у меня есть /users/my-users вместо /my-users, и я не знаю, почему. У меня есть тест с файлом шаблона, который включен в плагин и контроллер пользователей, например:
function (Event $event) {
if ($event->data['user']['role_id'] === 'bbcb3031-ebed-445e-8507-
f9effb2de026') //the id of role{
return ['plugin' => 'CakeDC/Users', 'controller' => 'Users', 'action' => 'profile';
}
И это работает. Мой URL-адрес перенаправляется после входа в качестве клиента /profile. Может ли кто-нибудь помочь мне понять? Пожалуйста, сообщите мне, если это недостаточно ясно и отсутствуют ли части кода, которые могут быть важны для понимания моей проблемы.
Уточняю, что я новичок в Cake.