首页 > 技术文章 > PHP:Laravel-admin的搭建和初步使用

wish-yang 2021-01-13 11:31 原文

一:安装

参考链接:https://laravel-admin.org/docs/zh/1.x/installation
注意:先需要确保安装了laravel,并设置好数据库链接

# 安装获取资源
composer require encore/laravel-admin:1.* 
# 发布资源
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
# 安装admin
php artisan admin:install

安装完成之后,可以通过localhost/admin来访问。(用户名admin密码admin)测试是否安装成功。

二:配置

app/Admin/routes.php文件用来配置后台路由。
app/Admin/bootstrap.php 是laravel-admin的启动文件。
app/Admin/Controllers目录用来存放后台控制器文件,该目录下的HomeController.php文件是后台首页的显示控制器,ExampleController.php为实例文件。
后台所需的前端静态文件在/public/vendor/laravel-admin目录下。

config/admin.php 后台配置管理文件

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin name
    |--------------------------------------------------------------------------
    |
    | 登录页面的大标题,显示在登录页面
    |
    */
    'name' => 'Laravel-admin',

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin logo
    |--------------------------------------------------------------------------
    |
    | 管理页面的logo设置,如果要设置为图片,可以设置为img标签
    | <img src="http://logo-url" alt="Admin logo">'.
    |
    */
    'logo' => '<b>Laravel</b> admin',

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin mini logo
    |--------------------------------------------------------------------------
    |
    | 当左侧边栏收起时显示的小logo,也可以设置为html标签
    |
    */
    'logo-mini' => '<b>La</b>',

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin bootstrap setting
    |--------------------------------------------------------------------------
    |
    | 用来设置启动文件
    |
    */
    'bootstrap' => app_path('Admin/bootstrap.php'),

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin route settings
    |--------------------------------------------------------------------------
    |
    | 后台路由配置,应用在`app/Admin/routes.php`里面
    |
    */
    'route' => [

        'prefix' => 'admin',

        'namespace' => 'App\\Admin\\Controllers',

        'middleware' => ['web', 'admin'],
    ],

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin install directory
    |--------------------------------------------------------------------------
    |
    | 后台的安装目录,如果在运行`admin:install`之前修改它,那么后台目录将会是这个配置的目录
    |
    */
    'directory' => app_path('Admin'),

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin html title
    |--------------------------------------------------------------------------
    |
    | 所有页面的<title>标签内容
    |
    */
    'title' => 'Admin',

    /*
    |--------------------------------------------------------------------------
    | Access via `https`
    |--------------------------------------------------------------------------
    |
    | 后台是否使用https
    |
    */
    'https' => env('ADMIN_HTTPS', false),

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin auth setting
    |--------------------------------------------------------------------------
    |
    | 后台用户使用的用户认证配置
    |
    */
    'auth' => [

        'controller' => App\Admin\Controllers\AuthController::class,

        'guards' => [
            'admin' => [
                'driver'   => 'session',
                'provider' => 'admin',
            ],
        ],

        'providers' => [
            'admin' => [
                'driver' => 'eloquent',
                'model'  => Encore\Admin\Auth\Database\Administrator::class,
            ],
        ],

        // Add "remember me" to login form
        'remember' => true,

        // 登陆之后的跳转地址
        'redirect_to' => 'auth/login',

        // 登陆验证的排除URI
        'excepts' => [
            'auth/login',
            'auth/logout',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin upload setting
    |--------------------------------------------------------------------------
    |
    | 在Form表单中的image和file类型的默认上传磁盘和目录设置,其中disk的配置会使用在
    | config/filesystem.php里面配置的一项disk
    |
    */
    'upload' => [

        // `config/filesystem.php`中设置的disk
        'disk' => 'admin',

        // image和file类型表单元素的上传目录
        'directory' => [
            'image' => 'images',
            'file'  => 'files',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin database settings
    |--------------------------------------------------------------------------
    |
    | 安装laravel-admin之后,默认会在数据库中新建下面9张表,包括用户、菜单、角色、权限、
    | 日志和它们之间的关系表,下面的配置是标的名字和对应的模型
    |
    | 其中的`connection`配置为下面几个模型所使用的数据库连接,对应`config/database.php`
    | 中的connections里面设置的connection,
    |
    | 如果你想修改数据库里面这几个表的名字,可以在运行`admin:install`之前修改它们
    | 如果install之后想修改,那么可以手动在数据库中修改,然后再修改下面几项的值
    |
    | 如果你需要在表里面增加字段,可以自定义模型,然后替换掉下面的模型设置即可,控制器的修改
    | 也可以通过覆盖路由的方式、覆盖掉内置的路由配置
    |
    */
    'database' => [

        // Database connection for following tables.
        'connection' => '',

        // User tables and model.
        'users_table' => 'admin_users',
        'users_model' => Encore\Admin\Auth\Database\Administrator::class,

        // Role table and model.
        'roles_table' => 'admin_roles',
        'roles_model' => Encore\Admin\Auth\Database\Role::class,

        // Permission table and model.
        'permissions_table' => 'admin_permissions',
        'permissions_model' => Encore\Admin\Auth\Database\Permission::class,

        // Menu table and model.
        'menu_table' => 'admin_menu',
        'menu_model' => Encore\Admin\Auth\Database\Menu::class,

        // Pivot table for table above.
        'operation_log_table'    => 'admin_operation_log',
        'user_permissions_table' => 'admin_user_permissions',
        'role_users_table'       => 'admin_role_users',
        'role_permissions_table' => 'admin_role_permissions',
        'role_menu_table'        => 'admin_role_menu',
    ],

    /*
    |--------------------------------------------------------------------------
    | User operation log setting
    |--------------------------------------------------------------------------
    |
    | 操作日志记录的配置
    |
    */
    'operation_log' => [

        // 是否开启日志记录、默认打开
        'enable' => true,

        /*
         * 允许记录请求日志的HTTP方法
         */
        'allowed_methods' => ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'],

        /*
         * 不需要被记录日志的url路径
         */
        'except' => [
            'admin/auth/logs*',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | User default avatar
    |--------------------------------------------------------------------------
    |
    | 默认头像
    |
    */
    'default_avatar' => '/vendor/laravel-admin/AdminLTE/dist/img/user2-160x160.jpg',

    /*
    |--------------------------------------------------------------------------
    | Admin map field provider
    |--------------------------------------------------------------------------
    |
    | model-form中map组件所使用的地图配置,支持三个地图服务商: "tencent", "google", "yandex".
    |
    */
    'map_provider' => 'google',

    /*
    |--------------------------------------------------------------------------
    | Application Skin
    |--------------------------------------------------------------------------
    |
    | 皮肤设置,参考https://adminlte.io/docs/2.4/layout设置
    |
    | 支持的设置为:
    |    "skin-blue", "skin-blue-light", "skin-yellow", "skin-yellow-light",
    |    "skin-green", "skin-green-light", "skin-purple", "skin-purple-light",
    |    "skin-red", "skin-red-light", "skin-black", "skin-black-light".
    |
    */
    'skin' => 'skin-blue-light',

    /*
    |--------------------------------------------------------------------------
    | Application layout
    |--------------------------------------------------------------------------
    |
    | 布局设置,参考https://adminlte.io/docs/2.4/layout
    |
    | 支持的设置为: "fixed", "layout-boxed", "layout-top-nav", "sidebar-collapse",
    | "sidebar-mini".
    |
    */
    'layout' => ['sidebar-mini', 'sidebar-collapse'],

    /*
    |--------------------------------------------------------------------------
    | Login page background image
    |--------------------------------------------------------------------------
    |
    | 登录页面的背景图设置
    |
    */
    'login_background_image' => '',

    /*
    |--------------------------------------------------------------------------
    | Show version at footer
    |--------------------------------------------------------------------------
    |
    | 是否在页面的右下角显示当前laravel-admin的版本
    |
    */
    'show_version' => true,

    /*
    |--------------------------------------------------------------------------
    | Show environment at footer
    |--------------------------------------------------------------------------
    |
    | 是否在页面的右下角显示当前的环境
    |
    */
    'show_environment' => true,

    /*
    |--------------------------------------------------------------------------
    | Menu bind to permission
    |--------------------------------------------------------------------------
    |
    | 菜单是否绑定权限
    */
    'menu_bind_permission' => true,

    /*
    |--------------------------------------------------------------------------
    | 是否要开启路由权限检查
    |--------------------------------------------------------------------------
    */
    'check_route_permission' => true,

    /*
    |--------------------------------------------------------------------------
    | 是否要开启菜单可见角色检查
    |--------------------------------------------------------------------------
    */
    'check_menu_roles'       => true,

    /*
    |--------------------------------------------------------------------------
    | Enable default breadcrumb
    |--------------------------------------------------------------------------
    |
    | 是否开启页面的面包屑导航
    */
    'enable_default_breadcrumb' => true,

    /*
    |--------------------------------------------------------------------------
    | 是否开启静态资源文件的压缩
    |--------------------------------------------------------------------------
    */
    'minify_assets' => [

        // 不需要被压缩的文件
        'excepts' => [

        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | 是否要开启侧边栏的菜单搜索
    |--------------------------------------------------------------------------
    */
    'enable_menu_search' => true,

    /*
    |--------------------------------------------------------------------------
    | 用来设置顶部的文字提示.
    |--------------------------------------------------------------------------
    */
    'top_alert' => '',

    /*
    |--------------------------------------------------------------------------
    | 设置数据表格的操作列显示类
    |--------------------------------------------------------------------------
    */
    'grid_action_class' => \Encore\Admin\Grid\Displayers\DropdownActions::class,

    /*
    |--------------------------------------------------------------------------
    | Extension Directory
    |--------------------------------------------------------------------------
    |
    | 如果你要运行`php artisan admin:extend`命令来开发扩展,需要配置这一项,来存放你的扩展文件
    */
    'extension_dir' => app_path('Admin/Extensions'),

    /*
    |--------------------------------------------------------------------------
    | Settings for extensions.
    |--------------------------------------------------------------------------
    |
    | 每一个laravel-admin扩展对应的配置,都写在这下面,扩展可以参考 https://github.com/laravel-admin-extensions
    |
    */
    'extensions' => [

    ],
];

汉化语言 只需要设置app.config里面的
php 'locale' => 'zh_CN'
即可

三,页面测试

1,先生成数据表model类

php artisan make:model City

2, 生成controller,这里请使用laravel-admin的命令 --model指定对应的model类

php artisan admin:make CityController --model=App\Models\City

3,在 app\Admin\routes.php 里添加route

$router->resource('cities','CityController');

4,去后台菜单里添加路由,然后刷新页面访问就OK了。

四,列表按钮禁用

  // 禁用批量删除按钮
  $grid->tools(function ($tools) {
      $tools->batch(function ($batch) {
          $batch->disableDelete();
      });
  });
  //去掉复选框
  $grid->disableRowSelector();
  //禁用行操作
  $grid->disableActions();
  //禁用新增按钮
  $grid->disableCreateButton();
  //关闭行操作-删除
  $grid->actions(function ($actions) {
      $actions->disableDelete();
  });
  //禁用导出
  $grid->disableExport();
  //禁用筛选
  $grid->disableFilter();

推荐阅读