一、使用 Laravel 搭建网站的前后台
1. 路由规则
(D:\phpStudy\PHPTutorial\WWW\laravel\routes\web.php)
// 前台路由
Route::group(['namespace'=>'Home'], function(){
// 前台首页
Route::get('/', "IndexController@index");
});
// 后台路由
// 通过路由组 提取 公共命令空间 和 公共的前缀
Route::group(['namespace'=>'Admin', 'prefix'=>'admin'], function(){
// 后台首页
Route::get('/', "IndexController@index");
// 后台用户管理模块
Route::resource('user', "UserController");
// 后台商品管理模块
Route::resource('goods', "GoodsController");
});
// 未提取公共命名空间 和 前缀的代码
Route::get('admin', "Admin\IndexController@index");
Route::resource('admin/user', "Admin\UserController");
Route::resource('admin/goods', "Admin\GoodsController");
2. 搭建控制器
(D:\phpStudy\PHPTutorial\WWW\laravel\app\Http\Controllers)
1) 新建 Admin 目录,存放后台控制器
2) 新建 Home 目录,存放前台控制器
3) 在前后台目录,根据路由的需要 创建控制器(以后台为例)
- IndexController.php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use DB;
// 后台首页控制器
class IndexController extends Controller
{
// 后台首页方法
public function index()
{
echo "我是后台首页";
}
}
3. 搭建页面
(D:\phpStudy\PHPTutorial\WWW\laravel\resources\views)
以 后台首页 为例
1) 后台首页控制器
public function index()
{
// 引入页面
return view('admin.index');
}
2) 在视图目录下,新建 admin目录,用于存放所有的后台页面
3) 在 admin目录下,新建后台首页文件 index.blade.php
4) 需要修改CSS样式 和 JS引入目录
一般建议大家把样式文件夹放到 public目录下
如:在 public
目录下,新建一个 admins
目录,将 css
, js
,img
文件都放进去(注:此处不可以用admin
,只能用 admins
),然后到 index.blade.php
中,将文件路径修改,到页面刷新。
4. 完成用户模块
1)控制器如何书写
D:\phpStudy\PHPTutorial\WWW\laravel\app\Http\Controllers\Admin\UserController.php
2)页面如何书写
D:\phpStudy\PHPTutorial\WWW\laravel\resources\views\admin\user
二、模板布局
0. 主要解决网站后台公共部分的修改
1. 需要在视图目录下新建一个Muban模板
2. 新建一个模板文件 admin.blade.php
<html>
<head></head>
<body>
<!-- 不一样的地方需要使用 -->
@yield('main')
</body>
</html>
3. 普通页面如何书写
<! -- 继承模板 -->
@extends('Muban.admin')
<!-- 替换占位的内容 -->
@section
<!-- 内容 -->
<div class="col-md-10">
<div class="jumbotron">
<img src="/admins/img/4.jpg" height="310px" width="100%">
<h2>后台管理系统</h2>
<p>开发者:XXX</p>
</div>
</div>
@endsection
注:若跳转链接没有效果,看看是否是因为 form表单默认的提交数据,可以使用 onsubmit="return false"
禁止表单提交(目的是:让其只起跳转作用)
三、中间件
1. 路由如何书写
- route/web.php
// 后台路由
// 通过路由组 提取公共命名空间 公共的前缀 和 中间件
Route::group(['namespace'=>'Admin', 'prefix'=>'admin', 'middleware'=>'adminLogin'], function(){
// 后台首页
Route::get('/', 'IndexController@index');
// 后台用户管理模块
Route::resource('user', 'UserController');
// 后台商品管理模块
Route::resource('goods', 'GoodsController');
});
2. 如何新建中间件
php artisan make:middleware adminLogin // 创建了 adminLogin中间件
3. 需要注册一个中间件(告诉 Laravel框架 注册了一个中间件)
(D:\phpStudy\PHPTutorial\WWW\laravel\app\Http\kernel.php)
protected $routeMiddleware = [
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'adminLogin' => \App\Http\Middleware\AdminLogin::class,
];
4. 打开中间件
(D:\phpStudy\PHPTutorial\WWW\laravel\app\Http\Middleware\adminLogin.php)
namespace App\Http\Middleware;
use Closure;
class adminLogin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// 判断 session中是否存在用户数据
// 如果存在,访问后台;不存在,请用户登录
if (session('adminUserInfo')) {
return $next($request);
} else {
// 让用户登录
return redirect('/admin/login');
}
return $next($request);
}
}