本篇教程中, 我们将利用 Laravel 5 自带的开箱即用的 Auth 系统对我们的后台进行权限验证, 并构建出前台页面, 对 Pages 进行展示
1. 权限验证
后台地址为 http://localhost:88/admin , 我们的所有后台操作都将在此页面或其子页面下进行利用 Laravel 5 提供的 Auth, 我们只需要改动很少部分的路由代码便可以实现权限验证功能
首先, 将路由组的代码改为:
代码如下:
- Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => 'auth'], function()
- {
- Route::get('/', 'AdminHomeComtroller@index');
- Route::resource('pages', 'PagesController');
- });
上面代码中只有一处变化: 给 `Route::group()` 的第一个参数 (一个数组) 增加了一项 `'middleware' => 'auth'` 现在访问 http://localhost:88/admin , 应该会跳转到登陆页面如果没有跳转, 也不要惊慌, 从右上角退出, 重新进入即可
我们的个人博客系统并不想让人随便注册, 下面我们将改动部分路由代码, 只保留基本的登录注销功能
删掉:
代码如下:
- Route::controllers([
- 'auth' => 'Auth\AuthController',
- 'password' => 'Auth\PasswordController',
- ]);
增加:
代码如下:
- Route::get('auth/login', 'Auth\AuthController@getLogin');
- Route::post('auth/login', 'Auth\AuthController@postLogin');
- Route::get('auth/logout', 'Auth\AuthController@getLogout');
带有权限验证的最小化功能的后台已经完成, 这个后台目前只管理 Page(页面)这一种资源接下来我们将构建前台页面, 把 Pages 展示出来
2. 构建首页
先整理路由代码, 将路由的最上面的两行:
代码如下:
- Route::get('/', 'WelcomeController@index');
- Route::get('home', 'HomeController@index');
改成:
代码如下:
Route::get('/', 'HomeController@index');
我们将直接使用 HomeController 来支撑我们的前台页面展示
此时可以删除 learnlaravel5/app/Http/Controllers/WelcomeController.php 控制器文件和 learnlaravel5/resources/views/welcome.blade.php 视图文件
修改 learnlaravel5/app/Http/Controllers/HomeController.php 为:
- <?php namespace App\Http\Controllers;
- use App\Page;
- class HomeController extends Controller {
- public function index()
- {
- return view('home')->withPages(Page::all());
- }
- }
控制器构造完成
`view('home')->withPages(Page::all())` 这句话实现以下功能:
渲染 learnlaravel5/resources/views/home.blade.php 视图文件
把变量 $pages 传进视图,$pages = Page::all()
Page::all() 调用的是 Eloquent 中的 all() 方法, 返回 pages 表中的所有数据
接下来我们开始写视图文件:
首先, 我们将创建一个前端页面的统一的外壳, 即 `` 部分及 `#footer` 部分新建 learnlaravel5/resources/views/_layouts/default.blade.php 文件(文件夹请自行创建):
@yield('content')
©2015 JohnLui
修改 learnlaravel5/resources/views/home.blade.php 文件为:
- @extends('_layouts.default')
- @section('content')
- Learn Laravel 5
- {{ Inspiring::quote() }}
- @foreach ($pages as $page)
- {{ $page->title }}
- {{ $page->body }}
- @endforeach
- @endsection
第一行 `@extends('_layouts.default')` 代表这个页面是 learnlaravel5/resources/views/_layouts/default.blade.php 的子视图此时 Laravel 的 视图渲染系统会首先载入父视图, 再将此视图中的 @section('content') 里面的内容放入到父视图中的 @yield('content') 处进行渲染
访问 http://localhost:88/ , 可以得到如下页面:
2. 构建 Page 展示页
首先增加路由在路由文件的第一行下面增加一行:
代码如下:
Route::get('pages/{id}', 'PagesController@show');
新建控制器 learnlaravel5/app/Http/Controllers/PagesController.php, 负责单个 page 的展示:
- <?php namespace App\Http\Controllers;
- use App\Page;
- class PagesController extends Controller {
- public function show($id)
- {
- return view('pages.show')->withPage(Page::find($id));
- }
- }
新建视图 learnlaravel5/resources/views/pages/show.blade.php 文件:
- @extends('_layouts.default')
- @section('content')
返回首页
- {{ $page->title }}
- {{ $page->updated_at }}
- {{ $page->body }}
- @endsection
全部完成, 检验成果: 点击首页之中任意一篇文章的标题, 进入文章展示页, 你会看到以下页面:
至此, 前台展示页面全部完成, 教程三结束
以上所述就是本文的全部内容了, 希望能够对大家学习 Laravel5 框架有所帮助
来源: https://www.php1.cn/detail/php-1b0ff1d4cc.html