Laravel-admin安装

Posted willem_chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel-admin安装相关的知识,希望对你有一定的参考价值。

安装

1、下载扩展包

composer require encore/laravel-admin

2、发布资源

php artisan vendor:publish --provider="Encore\\Admin\\AdminServiceProvider"

3、完成安装

在该命令会生成配置文件config/admin.php,可以在里面修改安装的地址、数据库连接、以及表名,建议都是用默认配置不修改。

然后运行下面的命令完成安装:

php artisan admin:install

启动服务后,在浏览器打开 http://localhost/admin/ ,使用用户名 admin 和密码 admin登录.

安装过程中,会自动执行数据库迁移,生成管理后台所需的数据表。使用用户名 admin 和密码 admin 登录。

生成的配置文件

安装完成之后,laravel-admin所有的配置都在config/admin.php文件中。

后台项目文件

安装完成之后,后台的安装目录为app/Admin,之后大部分的后台开发编码工作都是在这个目录下进行。

app/Admin
├── Controllers
│   ├── ExampleController.php
│   └── HomeController.php
├── bootstrap.php
└── routes.php

app/Admin/routes.php文件用来配置后台路由。

app/Admin/bootstrap.php是laravel-admin的启动文件, 使用方法请参考文件里面的注释.

app/Admin/Controllers目录用来存放后台控制器文件,该目录下的HomeController.php文件是后台首页的显示控制器,ExampleController.php为实例文件。

静态文件

后台所需的前端静态文件在/public/vendor/laravel-admin目录下。

数据表结构和模型

用Laravel自带的users表举例,表结构为:

users
    id          - integer
    name        - string
    email       - string
    password    - string
    created_at  - timestamp
    updated_at  - timestamp

对应的数据模型为文件 App\\User.php

使用laravel-admin可以通过使用以下几步来快速生成users表的CURD操作页面:

生成控制器

使用下面命令生成模型对应的控制器,这里为 App\\Models\\User 生成控制器(若在 windows 系统下操作,\\ 改为 \\)。

php artisan admin:make UserController --model=App\\\\Models\\\\User

上面的命令会创建路由器文件 app/Admin/Controllers/UserController.php 。

添加路由配置

在路由配置文件 app/Admin/routes.php 中添加如下代码:

function (Router $router) {
    $router->get('/', 'HomeController@index');
    $router->resource('users', UserController::class); //新添加的
});

添加左侧菜单栏链接

浏览器打开 http://xxx.com/admin/auth/menu,在新增一栏填写如下信息:
在这里插入图片描述
访问地址 http://xxx.com/admin/users,即可看到默认样式的用户列表。
在这里插入图片描述
使用上述同样的方法可以依次创建其他的控制器。

编写CURD页面逻辑

通过admin:make命令创建的控制器app/Admin/Controllers/UserController.php如下:

<?php
 
namespace App\\Admin\\Controllers;
 
use App\\Models\\User;
use Encore\\Admin\\Controllers\\AdminController;
use Encore\\Admin\\Form;
use Encore\\Admin\\Grid;
use Encore\\Admin\\Show;
 
class UserController extends AdminController
{
    protected $title = 'Users';
 
    protected function grid()
    {
        $grid = new Grid(new User());
 
        $grid->column('id', __('Id'));
        $grid->column('name', __('Name'));
        $grid->column('email', __('Email'));
        $grid->column('password', __('Password'));
        $grid->column('created_at', __('Created at'));
        $grid->column('updated_at', __('Updated at'));
 
        return $grid;
    }
 
    protected function detail($id)
    {
        $show = new Show(User::findOrFail($id));
 
        $show->field('id', __('Id'));
        $show->field('name', __('Name'));
        $show->field('email', __('Email'));
        $show->field('password', __('Password'));
        $show->field('created_at', __('Created at'));
        $show->field('updated_at', __('Updated at'));
 
        return $show;
    }
 
    protected function form()
    {
        $form = new Form(new User());
 
        $form->textarea('name', __('Name'));
        $form->textarea('email', __('Email'));
        $form->textarea('password', __('Password'));
 
        return $form;
    }
}

$title属性用来设置这个CURD模块的标题,可以将它修改为任何其它的字符串。

grid方法对应数据的列表页,实现列表页的相关功能逻辑。

detail方法对应数据的详情页,在列表页操作列的详情显示按钮点击进入,实现详情页的相关功能逻辑。

form方法对应数据的创建和编辑页,实现数据创建和编辑页的相关功能逻辑。

安装完成之后,会生成两个配置文件,用来对管理后台进行配置,config/admin.phpapp/Admin/bootstrap.php

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' => [
 
    ],
];

每一个laravel-admin扩展对应的配置,都写在这下面,扩展可以参考 https://github.com/laravel-admin-extensions

app/Admin/bootstrap.php

在这个配置文件中可以扩展或者移除你的组件,或者引入前端资源

<?php
 
/**
 * Laravel-admin - admin builder based on Laravel.
 * @author z-song <https://github.com/z-song>
 *
 * Bootstraper for Admin.
 *
 * Here you can remove builtin form field:
 * Encore\\Admin\\Form::forget(['map', 'editor']);
 *
 * Or extend custom form field:
 * Encore\\Admin\\Form::extend('php', PHPEditor::class);
 *
 * Or require js and css assets:
 * Admin::css('/packages/prettydocs/css/styles.css');
 * Admin::js('/packages/prettydocs/js/main.js');
 *
 */
 
Encore\\Admin\\Form::forget(['map', 'editor']);

页面内容 & 布局

后台页面的整体布局如下:

---------------------------------------
|                头部                  |
|-------------------------------------|
|    |                                |
|    |                                |
||              内容               |
||                                |
||                                |
|    |--------------------------------|
|    |           脚部                  |
---------------------------------------

其中头部,菜单栏、脚部三部分有框架维护,开发工作主要放在内容区域,参考下面的文档来定义内容区域的显示。

页面内容

laravel-admin的布局可参考后台首页的布局文件HomeController.php的index()方法。

Encore\\Admin\\Layout\\Content类用来实现内容区的布局。Content::body($content)方法用来添加页面内容:

一个简单的后台页面代码如下:

public function index(Content $content)
{
    // 选填
    $content->title('填写页面头标题');
 
    // 选填
    $content->description('填写页面描述小标题');
 
    // 添加面包屑导航 since v1.5.7
    $content->breadcrumb(
        ['text' => '首页', 'url' => '/admin'],
        ['text' => '用户管理', 'url' => '/admin/users'],
        ['text' => '编辑用户']
    );
 
    // 填充页面body部分,这里可以填入任何可被渲染的对象
    $content->body('hello world');
 
    // 在body中添加另一段内容
    $content->body('foo bar');
 
    // `row`是`body`方法的别名
    $content->row('hello world');
 
    // 直接渲染视图输出,Since v1.6.12
    $content->view('dashboard', ['data' => 'foo']);
 
    return $content;
}

其中$content->body();方法可以接受任何可字符串化的对象作为参数,可以是字符串、数字、包含了__toString方法的对象,实现了Renderable、Htmlable接口的对象,包括laravel的视图。

自定义页面内容

内容区域完全可以自定义显示,假设你要自定义模型详情页的显示,先在控制器中定义show方法:

use App\\Models\\Product;
use Encore\\Admin\\Layout\\Content;
 
class ProductController
{
    public function show(

以上是关于Laravel-admin安装的主要内容,如果未能解决你的问题,请参考以下文章

Laravel-admin安装

laravel-admin 自定义导出excel功能,并导出图片

Laravel-admin安装富文本编辑器 WangEditor

windows环境下composer安装laravel,laravel-admin,新手教程

windows环境下composer安装laravel,laravel-admin,新手教程

windows环境下composer安装laravel,laravel-admin,新手教程