digihood/digihood-admin-bar

dev-master 2022-10-12 11:52 UTC

This package is not auto-updated.

Last update: 2024-09-26 18:57:43 UTC


README

此包可以帮助您将类似Wordpress的admin栏添加到您的Laravel应用程序中。Admin栏是一个易于访问的工具栏,可以方便地访问您的管理页面。

admin-bar

支持版本

  • laravel/framework >= 5.5

安装

要安装laravel-admin-bar,请使用Composer进行依赖

composer require shrft/laravel-admin-bar

一旦Composer安装完成,运行以下命令

php artisan vendor:publish --provider="Digihood\AdminBar\AdminBarServiceProvider"

基本用法

您可以通过名为adminbar.php的配置文件来配置admin栏的显示方式和时机。如果您已经运行了上面的发布命令,您应该已经在config目录下找到了这个文件。

以下是adminbar.php的默认配置。您可以从这个文件的文档块中学习如何配置Admin Bar。

return array(

    /**
     *  
     * Change this to false to disable admin bar
     * 
     * */
    'enabled'=>true,

    /**
     * 
     * Please specify your admin pages' url so that Admin Bar does not show up in 
     * your admin pages. 
     * 
     * The default is 'admin/*'
     * When loading Admin Bar, It checks if current url matches the path set here with Illuminate\Http\Request::is().
     *  
     * */
    'excludes' => 'admin/*',

    /**
     * 
     * In order to show Admin Bar only for logged in admin users,
     * please specify how to tell if current visitor is logged in and also an admin 
     * user.
     * 
     * As a default, we just return true.
     * 
     * */
    'is_admin' => function(){

       // This is an example code. 
       // 
       // if( Auth::user() &&  Auth::user()->isAdmin()){
       //     return true;
       // }
       // return false;
        
        return true;
    },
    /**
     * 
     * Specify links to show on Admin Bar.
     * 
     * */
    'menus' => array(
        ['title'=>'Admin Top', 'path'=>'/admin'],
        ['title'=>'Add a post', 'path'=>'/admin/post/new'],
        ),
);

高级配置

动态生成路径

您可以将回调函数传递给menus数组中的path,并在回调函数中访问Illuminate\HttpRequest $request,从而可以根据当前URL动态生成链接。

如何在每个帖子页面添加编辑此帖子链接

假设您有以下两个路由,第一个是帖子页面,第二个是帖子的编辑页面。

# article page
Route::get('/post/{id}', ['uses'=>'PostController@show']);

# page to edit an article
Route::get('/admin/post/edit/{id}', ['uses'=>'Admin\PostController@edit']);

然后,您可以这样做。

'menus' => array(
        ['title'=>'Admin Top', 'path'=>'/admin'],
        ['title'=>'edit this post',
         'path'=>function($request){
                    $postid = $request->route('id');
                    return '/admin/post/edit/' . $postid;
                 }, 
         'filter'=>'post/*'],
        ),

下面的filter部分将进行解释。在上面的例子中,它表示只有当当前页面的路径以post/开头时才显示编辑此帖子链接。

过滤器

您可以通过配置Admin Bar,使得只有在特定条件下才会显示链接。

例如,如果您想在访问以'post/'开头的URL路径的页面时显示添加帖子链接,您可以将过滤器选项设置如下。

'menus' => array(
        ['title'=>'Admin Top', 'path'=>'/admin'],
        ['title'=>'Add Post', 'path'=>'/admin/post/new', 'filter'=>'post/*'],
        )

Admin Bar使用Illuminate\Http\Request::is()检查当前URL是否与过滤器中设置的路径匹配,并在返回true时显示链接。

如果您需要更复杂的配置,也可以将回调函数传递给过滤器选项。

如果您只想向具有author角色的用户显示添加帖子链接,您可能需要这样做。

'menus' => array(
        ['title'=>'Admin Top', 'path'=>'/admin'],
        ['title'=>'Add Post',
         'path'=>'/admin/post/new',
         'filter'=>function($request){
             return Auth::user()->isRole('author');
            }],
        )

在此回调中,您也可以访问Illuminate\HttpRequest $request

下拉菜单

您可以将下拉菜单添加到Admin Bar。要创建下拉菜单,请将数组传递给path

'menus' => array(
        ['title'=>'Admin Top', 'path'=>'/admin'],
        ['title'=>'Drop Down', 'path'=>[
                                 ['title'=>'Option1', 'path'=>'/path/to/option1'],
                                 ['title'=>'Option2', 'path'=>'/path/to/option2']
                                ]
        ],
        ),

许可证

Laravel Admin Bar是开源软件,采用MIT许可证。