基于 Laravel-Admin 在十分钟内搭建起功能齐全的后台模板

1、简介

Laravel 提供后台模板的项目越来越多,学院君已陆续为大家介绍过Laravel Angular AdminLaraAdminVoyager等,网友也贡献了很多后台模板,这对 Laravel 生态来说自然是好事,今天学院君还要给大家介绍一个后台模板扩展包,其官方文档号称可以帮助大家在十分钟内构建器功能完备的 Laravel 应用后台。接下来,让我们来一窥究竟吧。

laravel-admin 是一个用于为Laravel提供后台界面的构建器,仅仅通过数行代码,就可以帮助我们构建CRUD后台。

演示地址:http://120.26.143.106/admin

Github仓库:https://github.com/z-song/laravel-admin

截图:

laravel-admin

2、安装

注:安装前确保数据库连接配置正确。

以下是不同版本 Laravel 下 Composer 安装命令:

Laravel 5.2
composer require encore/laravel-admin "dev-master"

Laravel 5.3
composer require encore/laravel-admin "1.3.x-dev"

Laravel 5.1
composer require encore/laravel-admin "1.1.x-dev"

config/app.php中注册服务提供者:

Encore\Admin\Providers\AdminServiceProvider::class

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

php artisan vendor:publish --tag=laravel-admin
php artisan admin:install

在浏览器中访问http://localhost/admin/,使用admin/admin登录到后台。

配置文件位于config/admin.php,如果需要的话,可以打开该文件进行自定义配置。

3、快速入门

接下来我们以users表为例讲解该扩展包的使用,该数据表的结构如下:

CREATE TABLE `users` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
    `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
    `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
    `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
    `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
    `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
    PRIMARY KEY (`id`),
    UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

该数据表对应的模型App\User.php

下面我们来看下如何实现CRUD页面:

1)添加控制器

我们使用如下Artisan命令为User模型创建对应的控制器:

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

生成的控制器位于app/Admin/Controllers/UserController.php

2)添加路由

app/Admin/routes.php中添加路由:

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

3)添加左侧菜单项

打开http://localhost/admin/auth/menu,添加菜单链接并刷新页面,就会看到左侧菜单条。

4)构建格子和表单

接下来要做的是打开app/Admin/Contollers/UserController.php,找到gridform方法,并通过model-gridmodel-form编写自己的代码。

4、第三方组件

laravel-admin使用了以下第三方插件和服务:

学院君 has written 619 articles

资深PHP工程师,Laravel学院院长

54 thoughts on “基于 Laravel-Admin 在十分钟内搭建起功能齐全的后台模板

  1. 古秋 says:

    你好,
    1、为什么这里还要再创建一个user表呢?php artisan admin:install 命令执行完已经有好几个admin_开头的表生成,其中就包括admin_user;
    2、如果没创建user表,进后台点击菜单会报错,提示user表不存在;疑问,admin.php这里不是统一配置的了admin_前缀了么,怎么还会有不带前缀的表呢?
    谢谢老师回答

  2. hydsilk says:

    老师,我按照步骤搭好后,进入后台登录界面,用admin密码admin登录后出现错误
    FatalErrorException in ClassLoader.php line 314:
    Maximum function nesting level of ‘100’ reached, aborting!
    怎么会出现嵌套超过100次这样的错误啊

  3. p2010pt says:

    请问下一使用$form->image(‘logo’, trans(‘admin::lang.logo’)) 就会报错InvalidArgumentException in FilesystemManager.php line 109: Driver [] not supported.是什么原因?使用$form->file(‘logo’, trans(‘admin::lang.logo’)) 也是报同样的错误。

  4. 小付 says:

    安装laravel的时候报这个错怎么解决呢

    Your requirements could not be resolved to an installable set of packages.

    Problem 1
    – The requested package encore/laravel-admin No version set (parsed as 1.0.0) is satisfiable by encore/laravel-admin[No version set (parsed as 1.0.0)] but these conflict with your requirements or minimum-stability.

    Installation failed, reverting ./composer.json to its original content.

  5. Haogood says:

    老师,我依照github文档步骤出现了问题作业环境:Win10cmd工具:Cmder浏览器:Chrome1. 输入指令php artisan admin:make UserController –model=AppUser2. 在appAdminroutes.php输入$router->get(‘/user’, ‘UserController@index’);3. 在浏览器输入网址http://blog/admin/user可看见「新增」、「汇出」、「搜寻」等按钮相同步骤增加TestController (已建立和User相同的Model和table)1. 输入指令php artisan admin:make TestController –model=AppTest2. 在appAdminroutes.php输入$router->get(‘/test’, ‘TestController@index’);3. 在浏览器输入网址http://blog/admin/test可顺利进入,但是只有出现header和description,却没有任何按钮和表格目前遇到这个问题无法新增自定义的页面,都是相同的操作方式,相同的数据结构,为何会产生不同的Layout呢?

    1. 学院君 says:

      首先需要说下抱歉 因为多说这个评论插件最近垃圾评论满天飞 实在应接不暇 所以采取将所有评论先评审后显示的方式展示 所以导致评论后不能立即展示 关于这一点 准备换个评论实现方式 不然实在头疼。。。

          1. Haogood says:

            老師,我已經讀過文檔,想問的是TestController和UserController的function index()代碼相同,都是return Admin::content(function (Content $content) { $content->header(‘header’); $content->description(‘description’); $content->body($this->grid());});為何渲染出的視圖會不一樣呢?

          2. Haogood says:

            老師! 有東西了!!!在appTest.php 沒有加到這行protected $table = ‘test’;也就是說原來根本沒有連進數據庫的test table可以繼續研究model-grid的用法啦謝謝老師的指點!

发表评论

标记为*的字段是必填项(邮箱地址不会被公开)

你可以使用这些HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>