我安装了最新版本的OctoberCMS( Current Build - 434 )。
以下是我的插件Plugin.php
文件之一。
<?php namespace Technobrave\Users;
use System\Classes\PluginBase;
use Backend\Models\User as BackendUserModel;
use Backend\Controllers\Users as BackendUsersController;
use Event;
use \Backend\Facades\BackendAuth as BackendAuth;
use Db;
use Backend;
class Plugin extends PluginBase
{
public function registerNavigation()
{
$user = BackendAuth::getUser();
if(!empty($user))
{
// Adding "Custom Settings" menu of one of our local plugins
if($user->role['code'] == 'publisher')
{
return [
'modules' => [
'label' => 'Settings',
'icon' => 'icon-cog',
'url' => Backend::url('technobrave/themesettings/themesettings/update/1'),
]
];
}
}
}
public function boot()
{
\App::before(function() {
$user = BackendAuth::getUser();
if(!empty($user)){
if($user->role['code'] == 'publisher')
{
Event::listen('backend.menu.extendItems', function($navigationManager)
{
$navigationManager->removeMainMenuItem('October.System', 'system'); // Hiding Settings menu
$navigationManager->removeMainMenuItem('October.Cms', 'cms'); // Hiding CMS menu
$navigationManager->removeMainMenuItem('October.Cms', 'media'); // Hiding Media menu
$navigationManager->removeMainMenuItem('RainLab.Builder', 'Builder'); // Hiding Builder menu
});
}
}
});
}
}
正如您所看到的,这里我只是检查当前登录用户的信息,并根据该信息,我只是根据我的要求显示或隐藏几个菜单。
这个代码在这个新的OctoberCMS版本之前工作得很好。
目前,我的boot()
功能无法正常工作。
如果我这样做,
\App::before(function() {
$user = BackendAuth::getUser();
print_r($user);
exit;
});
它没有显示任何数据,但相同的功能在我的registerNavigation()
函数中正常工作。
不知道这是否是OctoberCMS的新版本问题,但它在我的旧版OctoberCMS版本中工作得非常好。
有人可以指导我解决这个问题。