快速开始

数据表结构和模型

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\User模型对应的控制器

// Mac os、 Linux
php artisan admin:make UserController --model=App\\User

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

v1.8.0版本可以使用admin:controller命令创建控制器:

php artisan admin:controller --model=App\User

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

添加路由

在路由配置文件app/Admin/routes.php里添加一行:

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

添加菜单栏入口

打开菜单管理页http://localhost:8000/admin/auth/menu,添加对应的menu, 然后就能在后台管理页面的左侧边栏看到用户管理页面的链接入口了。

其中uri填写不包含路由前缀的的路径部分,比如完整路径是http://localhost:8000/admin/demo/users, 那么就填demo/users,如果要添加外部链接,只要填写完整的url即可,比如http://laravel-admin.org/.

编写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方法对应数据的列表页,参考model-grid 文档来实现列表页的相关功能逻辑。

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

form方法对应数据的创建编辑页,参考model-form 文档来实现数据创建和编辑页的相关功能逻辑。