我在CakePhp应用程序中使用CakeDC用户和ACL插件。在我的应用中,我的用户具有不同的角色,并且我希望登录后根据角色具有不同的仪表板。我根据文档here用自己的表和控制器扩展了插件,因此我的MyUsersController和MyUsersTable覆盖了插件的初始文件,UsersController和UsersTable。一切正常。我在包含以下内容的events.php文件中创建一个事件:
BookingSourceDataService
但是似乎覆盖不起作用,因为我遇到了错误:
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];
}
}
);
在我的URL中,我有/ users / my-users而不是/ my-users,我也不知道为什么。我已经测试了一个模板文件,该文件包含在插件和用户控制器中,如下所示:
Error: CakeDC/Users.MyUsersController could not be found.
它有效。作为客户端登录后,我的URL重定向是/ profile。 有人可以帮我理解吗?请告诉我它是否还不够清楚,以及是否缺少可能对理解我的问题很重要的代码部分。
我指定我是Cake的初学者:)
谢谢
答案 0 :(得分:2)
您的自定义控制器不在CakeDC/Users
插件中,因此您必须相应地禁用plugin
键,以便生成正确的URL(假设您的路由设置正确),像这样连接到您的控制器:
[
'plugin' => null,
'controller' => 'MyUsers',
'action' => 'index',
'_full' => true,
'prefix' => false
]
例如,这将匹配默认的后备路由,从而生成类似/my-users
的URL。
另请参阅: