Win10环境使用Laravel8+Laravel-Admin2.0搭建管理后台
1. 安装
1.1 Laravel8
1.1.1 WAMP
WAMP是指在Windows服务器上使用Apache、MySQL和PHP的集成安装环境,可以快速安装配置Web服务器。
本篇内容使用的phpStudy8.1.1.3
- 支持Php 8.0.2
- 支持Mysql 8.0.12
- 支持Redis 3.0.5
- 支持Nginx 1.16.1
1.1.2 Composer
Composer 是 PHP 的一个依赖管理工具。
官方下载地址
https://getcomposer.org/download/
1.1.3 Node.js
Node.js 是一个开源和跨平台的 JavaScript 运行时环境。 它几乎是任何类型项目的流行工具!Laravel8 的扩展需要Node.js环境支持。
官方下载地址
http://nodejs.cn/download/
1.1.4 Laravel 8
在D盘home目录创建项目myweb,安装程序自动创建home和myweb目录
composer create-project laravel/laravel=8.* --prefer-dist d:\home\myweb
1.2 Laravel-Admin
Laravel-Admin 2.0 功能齐全的后台管理扩展包
laravel-admin 2.0 是基于laravel 7.*的版本和AdminLTE前端样式框架开发的一套通用后台管理系统laravel-admin:
- 内置基于RBAC的权限系统
- 菜单管理,和权限系统结合
- 模型数据表格,能快速构建数据表格,并支持多种模型关系
- 模型表单以及30+种form元素组件,自动实现增、删、改功能
- 支持本地和云存储,支持图片的剪裁、压缩、加水印等操作
- 大量常用后台开发组件
1.2.1 安装admin扩展包
composer require encore/laravel-admin:2.*
1.2.2 发布资源到项目里
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
1.2.3 数据库连接配置
- .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=admin
DB_USERNAME=admin
DB_PASSWORD=abcdddd
- config\database.php
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
1.2.4 初始化数据
php artisan admin:install
1.2.5 启动本地服务器验证
php artisan serve
启动服务后,在浏览器打开 http://localhost/admin/ ,使用用户名 admin 和密码 admin登录
2. 深入配置
2.1 Laravel App 环境
编辑config/app.php
2.1.1 中文语言
- 设置Laravel中文语言支持
'locale' => 'zh-CN',
- 备用语言,如果locale指定语言找不到相应内容使用备用语言
'fallback_locale' => 'en',
- 让Faker数据生成器能生成中文假数据
'faker_locale' => 'zh-CN',
2.1.2 增加自定义中文翻译
resources/lang目录下新建resources/lang/zh-CN.json
{
"Id": "ID",
"ID": "ID",
"Created at":"创建时间",
"Updated at":"更新时间",
"name":"名字",
"email":"邮箱",
"Item name":"项目名称",
"Item id":"项目ID",
"Publish":"发布状态",
"Expiry date":"有效期",
"Access level":"访问级别",
"Order":"排序",
"Content":"内容",
"Type":"类型",
"Plan name":"方案名称",
"Plan id":"方案ID",
"User level":"用户访问级别"
}
控制器里相应的显示Label标签就会自动按上表规则翻译成中文显示
$table->column('item_id', __('Item id'));
“Item id"在页面里显示为"项目ID”
2.1.3 设置时区
//'timezone' => 'UTC',
'timezone' => 'Asia/Shanghai',
2.1.4 设置HTTPS访问
布署到CentOS站点时,如果站点使用SSL证书,Nginx会配置把所有http访问重定向到https链接访问,这时登录页面可能会重定向自己的https链接,造成没有任何提示且无法正常登录的情况,这时需要修改larave的.env环境文件,在任何行加入允许HTTPS访问
ADMIN_HTTPS=true
2.2 Admin环境
config/admin.php
2.2.1 定制页面
- 登录页面的大标题,显示在登录页面
'name' => 'Laravel-admin',
- 登录内页Logo角标
'logo' => [
'image' => '/vendor/laravel-admin/AdminLTE/img/AdminLTELogo.png',
'text' => '<span class="font-weight-bolder">我的CMS</span>'
],
- 所有页面的
标签内容
'title' => '我的CMS | 管理',
- 登录页面的背景图设置
'login_background_image' => '',
2.2.2 文件上传设置
- Form表单中的image和file类型的默认上传磁盘和目录设置
'upload' => [
// `config/filesystem.php`中设置的disk路径
'disk' => 'admin',
// image和file类型表单元素的上传目录
'directory' => [
'image' => 'images',
'file' => 'files',
],
],
- config/filesystem.php
//本地端public的uploads空间,用于远程存储与浏览器访问,完全对外开放
'admin' => [
'driver' => 'local',
'root' => public_path('upload'),
'url' => env('APP_URL').'/upload',
'visibility' => 'public',
],
3. 使用Migration创建数据库
3.1 数据迁移
Laravel数据迁移创建数据表结构
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateQuestionnairesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('questionnaires', function (Blueprint $table) {
$table->increments('id');
$table->string('item_name', 190)->unique();
$table->timestamp('expiry_date');
$table->timestamp('publish');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('questionnaires');
}
}
-timestamps() 等价于下面两条命令,同时创建’created_at’和’updated_at’字段
$table->timestamp(‘created_at’)
$table->timestamp(‘updated_at’)
-increments(‘id’) 自增id
-unique() 定义字段数据唯一性
-comment(‘字段注解’) 定义字段注解
-其他常用选项
$table->engine = ‘InnoDB’; // 指定表引擎
$table->charset = ‘utf8mb4’; // 表字符集
$table->collation = ‘utf8mb4_unicode_ci’; // 表排序规则
3.2 数据填充
使用DatabaseSeeder类填充测试数据,或者设置你的APP初始数据
3.2.1 使用Seeder方式填充菜单预设数据
3.2.1.1 生成并编写Seeder
php artisan make:seeder AdminMenuSeeder
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
class AdminMenuSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table(config('admin.database.menu_table'))->insert([
[
'parent_id' => 0,
'order' => 1,
'title' => '仪表盘',
'icon' => 'fas fa-tachometer-alt',
'uri' => '/',
'created_at' => Carbon::now(),
'updated_at' => NULL,
],
[
'parent_id' => 0,
'order' => 7,
'title' => '客户管理',
'icon' => 'fas fa-user-tie',
'uri' => NULL,
'created_at' => Carbon::now(),
'updated_at' => NULL,
],
[
'parent_id' => 0,
'order' => 9,