简单使用Laravel-admin构建一个功能强大的后台管理
Laravel-admin可以快速构建一个功能强大的后台,方便快速开发。
以下内容记录简单使用Laravel-admin,以及遇到小错误的解决方法。
Laravel-admin 依赖以下环境 需要提前装好(安装的Laravel-admin版本为1.5)
1
2
3
|
Apache+PHP+MYSQL (这个不作解释... 注意需要PHP 7+ 推荐使用phpstudy集成环境) Laravel (5.5+) Composer |
以上环境如PHP/Composer需要设置好系统环境变量
先使用Composer命令安装Laravel ,命令如下(用cmd或者Git先进入到想要安装的目录)
1
|
composer create-project --prefer-dist laravel /laravel Laravel-admin 5.7.* |
如果觉得安装速度慢,可以改一下镜像地址 参考:https://pkg.phpcomposer.com/
安装完成即显示:
然后在安装时指定的目录会有一个Laravel-admin文件夹 此时需要设置一下Apache 网站目录设置为Laravel-admin下的public
使用的是phpstudy集成环境,所以在phpstudy中点击[其他选项菜单]=>[站点域名管理] 设置内容:
接下来需要设置一下系统hosts,使用集成环境phpstudy可以在[其他选项菜单]=>[打开host]
也可以手动打开该文件,该文件路径为:
1
|
C:Windows\System32\driversetc\hosts |
在hosts文件最底下添加一行代码:
1
|
127.0.0.1 www.laravel-admin. test |
保存好文件,打开浏览器输入www.laravel-admin.test即可看到Laravel页面:
如果不能显示这个界面,请检查是否漏掉了上面某个步骤。
接下来需要设置Laravel的数据库
先使用浏览器打开localhost/phpmyadmin/ 此数据库管理系统是phpstudy自带了
使用账号/密码root登录进去
新建一个数据库:
数据库建好后,打开Laravel-admin目录,修改该目录下的.env文件,修改配置数据库参数:
接下来就是安装Laravel-admin,打开Git或者cmd指定到Laravel-admin目录下,然后输入以下代码(也可打开Laravel-admin官方 参考官方文档安装):
1
|
composer require encore /laravel-admin |
完成后:
使用命令发布资源:
1
|
php artisan vendor:publish --provider= "Encore\Admin\AdminServiceProvider" |
最后使用命令完成安装
1
|
php artisan admin: install |
如果出现错误:
1
2
3
4
5
|
1 DoctrineDBALDriverPDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Spec ified key was too long; max key length is 1000 bytes") 2 PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too lon g; max key length is 1000 bytes") |
解决方法:
修改laravel-admin/app/Providers目录下的AppServiceProvider.php文件:
代码:
1
2
|
use Illuminate\Support\Facades\Schema; Schema::defaultStringLength(191); |
再进入数据库管理系统 localhost/phpmyadmin/ 将laravel_admin数据库里面的表全删除
再执行命令:
1
|
php artisan admin: install |
如果没有遇到错误,则无需修改文件也无需执行命令。
至此,Laravel-admin已经安装完成
可以在浏览器打开:www.laravel-admin.test/admin 访问进入后台。账号及密码为:admin
假如数据库中有一个文章表,如何使用Laravel-admin管理文章?
接下来简单使用Laravel-admin管理文章。
先在laravel_admin数据库建立一个文章表 表取名为:Article,
需要的字段有:
id(设置为主键并自增),
title(文章标题,VARCHAT类型长度32),
content(文章内容,TEXT类型),
updated_at(修改时间,TIMESTAMP类型),
created_at(创建时间,TIMESTAMP类型)
--此处犯了个错误,表名不该使用大写开头,应该使用全小写(开发规范) 大家引以为戒。
此时打开后台,会发现都是英文,需要修改配置文件(laravel-admin目录下)config/app.php:
找到代码:
1
|
'locale' => 'en' , |
修改为:
1
|
'locale' => 'zh-CN' , |
此时打开后台依然会发现左侧导航存在英文
点击左侧导航中的[Admin]=>[Menu],即可修改导航为中文(需要一个一个修改左侧导航)。
回到重点,需要创建一个菜单,为文章管理
此时刷新页面,会发现左侧导航有一个【文章管理】,如果点击【文章管理】会发现报404错误,这是因为没有设置路由。
打开文件(laravel-admin目录下)app/Admin/routes.php
添加一句代码:
1
|
$router ->resource( '/article' , ArticleController:: class ); |
进入laravel-admin目录下app/Admin/Controllers
复制控制器文件ExampleController.php为ArticleController.php
修改类名:
1
|
class ExampleController extends Controller |
将类名修改为ArticleController
如:
1
|
class ArticleController extends Controller |
创建文章表模型,在cmd或者Git使用命令:
1
|
php artisan make :model Article |
此时会生成一个名为Article.php的文件并存放于laravel-admin目录下app目录中。
需要为此文件的Article类中添加代码:
1
|
protected $table = 'Article' ; |
添加后Article.php文件的代码如:
1
2
3
4
5
6
7
8
9
10
|
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Article extends Model { protected $table = 'Article' ; } |
继续修改laravel-admin目录下app/Admin/Controllers/ArticleController.php文件
将所有写着YourModel的地方修改为Article
别忘了需要在文件顶部引入文章模型,引入代码:
1
|
use App\Article; |
此时后台左侧导航的文章管理已经能正常打开不会报404错误
为了这个界面好看点,在app/Admin/Controllers/ArticleController.php文件的grid函数修改如下:
1
2
3
4
5
6
7
8
9
10
11
|
protected function grid() { $grid = new Grid( new Article); $grid ->id( 'ID' )->sortable(); $grid ->title( '文章标题' ); $grid ->created_at( '创建时间' ); $grid ->updated_at( '修改时间' ); return $grid ; } |
此时刷新界面再点击右上角【新建】
需要修改form函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
protected function form() { $form = new Form( new Article); $form ->text( 'title' , '文章标题' ); $form ->textarea( 'content' , '文章内容' ); $form ->display( 'id' , '文章ID' ); $form ->display( 'created_at' , '创建时间' ); $form ->display( 'updated_at' , '修改时间' ); return $form ; } |
此时再刷新页面,发现有了一些组件,可以正常写文章并提交保存到数据库。
返回到文章管理的页面,点击右侧【操作】中的“眼睛”按钮查看文章详情,发现并没有文章详情,这是因为需要修改detail函数:
1
2
3
4
5
6
7
8
9
10
11
12
|
protected function detail( $id ) { $show = new Show(Article::findOrFail( $id )); $show ->id( '文章ID' ); $show ->title( '文章标题' ); $show ->content( '文章内容' ); $show ->created_at( '创建时间' ); $show ->updated_at( '修改时间' ); return $show ; } |
laravel-admin目录下app/Admin/Controllers/ArticleController.php控制器全部代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
<?php namespace AppAdminControllers; use App\Http\Controllers\Controller; use Encore\Admin\Controllers\Has\Resource\Actions; use Encore\Admin\Form; use Encore\Admin\Grid; use Encore\Admin\Layout\Content; use Encore\Admin\Show; use App\Article; class ArticleController extends Controller { use Has\Resource\Actions; /** * Index interface. * * @param Content $content * @return Content */ public function index(Content $content ) { return $content ->header( 'Index' ) ->description( 'description' ) ->body( $this ->grid()); } /** * Show interface. * * @param mixed $id * @param Content $content * @return Content */ public function show( $id , Content $content ) { return $content ->header( 'Detail' ) ->description( 'description' ) ->body( $this ->detail( $id )); } /** * Edit interface. * * @param mixed $id * @param Content $content * @return Content */ public function edit( $id , Content $content ) { return $content ->header( 'Edit' ) ->description( 'description' ) ->body( $this ->form()->edit( $id )); } /** * Create interface. * * @param Content $content * @return Content */ public function create(Content $content ) { return $content ->header( 'Create' ) ->description( 'description' ) ->body( $this ->form()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid( new Article); $grid ->id( 'ID' )->sortable(); $grid ->title( '文章标题' ); $grid ->created_at( '创建时间' ); $grid ->updated_at( '修改时间' ); return $grid ; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail( $id ) { $show = new Show(Article::findOrFail( $id )); $show ->id( '文章ID' ); $show ->title( '文章标题' ); $show ->content( '文章内容' ); $show ->created_at( '创建时间' ); $show ->updated_at( '修改时间' ); return $show ; } /** * Make a form builder. * * @return Form */ protected function form() { $form = new Form( new Article); $form ->text( 'title' , '文章标题' ); $form ->textarea( 'content' , '文章内容' ); $form ->display( 'id' , '文章ID' ); $form ->display( 'created_at' , '创建时间' ); $form ->display( 'updated_at' , '修改时间' ); return $form ; } } |
至此,文章管理中的CRUD(增删查改)均实现。
但仔细看,后台中的新建文章的文章内容使用的是textarea而不是富文本编辑器。
官方文档有详细使用富文本编辑器的教程:https://laravel-admin.org/docs/zh/model-form-field-management
后续如果有需要再写富文本编辑器的文章吧。
简单使用Laravel-admin构建一个功能强大的后台管理的更多相关文章
- 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager
我们在本地启动Tomcat服务器后,用localhost:访问: 再点Manager App,即可进入Tomcat自带的Manager这个应用,此处可以单独部署/卸载每一个应用.可以看到在Manage ...
- cURL 是一个功能强大的PHP库。
使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了.无论是你想从从一个链接上取部分数据,或是取一个XML文件并把 ...
- 整合了一个功能强大完善的OA系统源码,php全开源 界面漂亮美观
整合了一个功能强大完善的OA系统源码,php全开源界面漂亮美观.需要的同学联系Q:930948049
- WebLech是一个功能强大的Web站点下载与镜像工具
WebLech是一个功能强大的Web站点下载与镜像工具.它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为.WebLech有一个功能控制台并采用多线程操作. http://sour ...
- SuperSwipeRefreshLayout 一个功能强大的自己定义下拉刷新组件
SuperSwipeRefreshLayout 一个功能强大的自己定义下拉刷新组件. Why? 下拉刷新这样的控件.想必大家用的太多了,比方使用非常多的XListView等. 近期.项目中非常多列表都 ...
- 高效、易用、功能强大的 api 管理平台
前言导读 实际环境的需求可以说是:只有你没想到,没有实现不了的,征对于目前实际开发.测试.生产等环境中,需要用到各类的接口可达几十.甚至上百个,因此,必须需要一个统一管理的工具平台来统一管理这类接口, ...
- 写了一个vue+antdv的后台管理模板
1,项目简介 写在前面===>这是一个vue+antdv的后台管理模板 项目地址: https://github.com/BaiFangZi/vue-antd-manage 1.1,概述 最 ...
- 强烈推荐一款功能强大的Tomcat 管理监控工具
专注于Java领域优质技术号,欢迎关注 原创: 侯树成 Tomcat那些事儿 启动 Tomcat完毕 ,有些时候总会打开浏览器 http://localhost:8080/ 去验证你的Tomcat是否 ...
- 8 功能6:后台管理页面,编辑文章,xss攻击
1.后台管理页面之文本编辑 # 后台管理url re_path(r'^cn_backend/$', views.cn_backend, name='cn_backend'), re_path(r'^c ...
随机推荐
- Laex/Delphi-OpenCV
https://github.com/Laex/Delphi-OpenCV 66 Star119 Fork75 Laex/Delphi-OpenCV CodeIssues 3Pull requests ...
- python读取mysql返回json
python内部是以tuple格式存储的关系型数据库的查询结果,在实际的使用过程中可能需要转换成list或者dict,json等格式.在这里讲解如何将查询的结果转成json字符串.这里需要导入nump ...
- jQuery设置checkbox 为选中状态
1设置第一个checkbox 为选中值$('input:checkbox:first').attr("checked",'checked');或者$('input:checkbox ...
- Series序列
import pandas as pd '''Series序列:1.序列 的声明,指定index列标签2.查看列索引(index)和元素 (values)3.选择内部元素4.为元素赋值5.用Numpy ...
- 整理eclipse,升级jdk环境小记录
这2天在整理项目: 需要把eclipse 32位,jdk1.6 32位的更改为eclipse 64位,jdk1.8 64位版本的,于是我就在一台window7的电脑上直接操作,遇到了一下几点问题,记录 ...
- make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误
解决CentOS 7 中,make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误 在CentOS 7中,使用static方法编译,需要安装static vers ...
- HTTPS 301错误码 以及 SSL错误
301 redirect: 301 代表永久性转移(Permanently Moved) 解决方法:修改请求 http 改为 https PHP通过cURL访问https时出现SSL certific ...
- 拓展练习--find查找、打包压缩、服务器、磁盘挂载
目录 find查找.打包压缩 服务器部分 磁盘挂载及单用户模式 find查找.打包压缩 1.超级用户(管理员用户)提示符是_#,普通用户提示符是$_. 2.如何快速返回上一次所在的目录? cd - 3 ...
- 力扣 ——4Sum (四数之和)python 实现
题目描述: 中文: 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 targe ...
- 对struct typedef *的认识
typedef struct node { ……… }NODE,*PNODE; 应该等价于 typedef struct node NODE;//struct node = NODE,eg:struc ...