[PHP] - Laravel-Admin 一键搭建后台系统

Laravel-Admin

Laravel-Admin 是一款基于 Laravel 框架的后台系统,包括了完整的 UI 及封装好了的数据库增删改查,可以用来快速搭建网站后台。

Laravel-Admin 官网:https://laravel-admin.org/

快速安装

首先确保安装了 Laravel,创建好 Laravel 应用后,执行命令:

composer require encore/laravel-admin

安装完成后,再执行:

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

该命令会生成相关的资源文件,如 app/Admin 目录下生成了相关的命令。

打开 config 文件夹,可以看到 admin.php,这个文件即后台的配置,可以在里面修改安装的地址、数据库连接、以及表名,建议都是用默认配置不修改。

接着运行如下命令进行安装:

php artisan admin:install

命令执行完成后即可运行 php artisan serve 启动 Laravel。

后台访问地址:http://127.0.0.1:8000/admin

初始账号:admin
初始密码:admin

image.png

Laravel-Admin 界面:

image.png

路由配置

打开 app/Admin,底下有一个 routes.php 即后台的路由配置文件。

配置方法与 Laravel 一样。

基本操作

如何创建路由与控制器?

Laravel-Admin 提供了基础命令来创建后台路由:

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

// 在windows系统中
php artisan admin:make UserController --model=App\User

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

接着在 laravel-admin 的路由配置文件 app/Admin/routes.php 里添加一行:

$router->resource('users-manager', 'UserController');

如下:

<?php

use Illuminate\Routing\Router;

Admin::routes();

Route::group([
    'prefix'        => config('admin.route.prefix'),
    'namespace'     => config('admin.route.namespace'),
    'middleware'    => config('admin.route.middleware'),
], function (Router $router) {

    $router->get('/', 'HomeController@index')->name('admin.home');
    $router->resource('users-manager', 'UserController');
});

这里我们将路由地址设置为 restful 风格的路由,默认访问路径:/admin/users-manager

接下来进入后台,选择左侧的 Menu 选项,填写菜单配置信息。

image.png

  • Title 菜单标题
  • Icon 菜单图标
  • Uri 菜单路由,不需要添加前缀
  • Roles 允许访问角色
  • Permission 权限

菜单路由不需要带有 admin 前缀,如 admin/users-manager 填写 users-manager 即可。

接着点击保存即可。

刷新页面即可看到创建的菜单。

打开数据库,打开 users 表,往里面随意添加几条数据。

image.png

然后访问地址:127.0.0.1:8000/admin/users-manager

image.png

Action 即包含了基础的删改查功能。

为什么我们上面连数据库的操作代码都没写就能一键生成带有增删改查功能的后台系统?

原来是 Laravel-Admin 帮我们做好了基础的控制器功能,打开 app/Admin/Controllers/UserController.php 可以发现里面已经写好了对应的方法:

<?php

namespace App\Admin\Controllers;

use App\User;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Show;

class UserController extends AdminController
{
    /**
     * Title for current resource.
     *
     * @var string
     */
    protected $title = 'App\User';

    /**
     * Make a grid builder.
     *
     * @return Grid
     */
    protected function grid()
    {
        $grid = new Grid(new User);

        $grid->column('id', __('Id'));
        $grid->column('name', __('Name'));
        $grid->column('email', __('Email'));
        $grid->column('email_verified_at', __('Email verified at'));
        $grid->column('password', __('Password'));
        $grid->column('remember_token', __('Remember token'));
        $grid->column('created_at', __('Created at'));
        $grid->column('updated_at', __('Updated at'));

        return $grid;
    }

    /**
     * Make a show builder.
     *
     * @param mixed $id
     * @return Show
     */
    protected function detail($id)
    {
        $show = new Show(User::findOrFail($id));

        $show->field('id', __('Id'));
        $show->field('name', __('Name'));
        $show->field('email', __('Email'));
        $show->field('email_verified_at', __('Email verified at'));
        $show->field('password', __('Password'));
        $show->field('remember_token', __('Remember token'));
        $show->field('created_at', __('Created at'));
        $show->field('updated_at', __('Updated at'));

        return $show;
    }

    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        $form = new Form(new User);

        $form->text('name', __('Name'));
        $form->email('email', __('Email'));
        $form->datetime('email_verified_at', __('Email verified at'))->default(date('Y-m-d H:i:s'));
        $form->password('password', __('Password'));
        $form->text('remember_token', __('Remember token'));

        return $form;
    }
}

只不过这种基础的写法只能做简单的数据库操作,如果涉及到联表查询等复杂指令就需要自己写代码了。

控制器结构

Laravel-Admin 控制器里包含了几个基础方法:

  • grid:列表中的表格
  • detail:点击查看的详情
  • form:编辑时的表单

Laravel-Admin 提供了许多 API 可以使用,详情就不再此进行介绍,本文仅做入门参考使用。

更多 API 请阅读官方文档:https://laravel-admin.org/docs/zh/

讨论

还没有人评论~