Laravel 5 框架入门(三)
本篇文章主要讲解了在Laravel 5框架中如何利用自带的开箱即用的Auth系统进行后台权限验证,并构建前台页面展示Pages。让我们开始详细这个过程。
一、权限验证
在后台管理中,我们首先需要进行权限验证以确保只有具备相应权限的用户才能访问和操作后台功能。在Laravel 5中,我们可以利用自带的Auth系统进行权限验证。我们只需要修改部分路由代码即可实现此功能。通过增加一个中间件 'auth',只有经过身份验证的用户才能访问后台页面。具体实现如下:
我们将修改路由组的代码,添加 'middleware' => 'auth',使得只有登录的用户才能访问后台页面。我们删除了一些不必要的注册和找回密码的路由,只保留了登录、退出功能。这样,我们的个人博客系统就更加安全了。
二、构建首页
在完成权限验证后,我们需要构建前台页面来展示Pages。我们整理路由代码,将默认的路由修改为直接指向首页。然后,我们删除原有的Welcome控制器和视图文件,创建一个新的HomeController控制器来支撑前台页面的展示。
在HomeController控制器中,我们定义了一个index方法,该方法返回首页视图并传递所有Pages数据到视图。在视图中,我们可以利用传递的Pages数据来展示页面内容。这里需要注意的是,我们使用了Eloquent中的all()方法来获取pages表中的所有数据。
接下来,我们需要创建视图文件来展示前台页面。我们将创建一个前端页面的统一外壳,包括头部和页脚部分。在视图文件中,我们可以利用传递的Pages数据来生成页面内容,例如列出所有Pages的标题和链接等。
```html
@yield('content')
-
{{ $page->body }}@endsection ```
`第一行 )` 代表这个页面是 `learnlaravel5/resources/views/_layouts/default.blade.php` 的子视图。此时 Laravel 的视图渲染系统会载入父视图,再将此视图中的 `@section('content')` 里面的内容放入到父视图中的 `@yield('content')` 处进行渲染。
`访问` ,可以得到如下页面。
2. 构建 Page 展示页
`增加路由`。
` ```这段描述看起来不完整,它似乎在解释如何在 Laravel 中构建页面展示并增加路由,但没有具体的操作指南或代码示例。如果需要详细说明如何在 Laravel 中构建页面展示并增加路由,请提供更多的上下文或具体需求,以便我能提供更准确和详细的指导。在路由文件的顶部,我们为狼蚁网站增加了SEO优化的路线代码。现在,我们进一步深入到Laravel 5框架的控制器和视图部分。在 Laravel 5 的应用中,控制器是处理应用逻辑的核心部分。针对页面展示的需求,我们新建了一个名为 PagesController 的控制器,位于 app/Http/Controllers 目录下。这个控制器负责展示单个页面。
以下是 PagesController.php 文件的内容:
```php
namespace App\Http\Controllers;
use App\Page;
class PagesController extends Controller {
public function show($id) {
$page = Page::find($id); // 通过ID查找页面
return view('pages.show')->withPage($page); // 返回展示页面的视图,并传递页面数据
}
}
```
紧接着,我们创建了对应的视图文件,即 show.blade.php,它位于 learnlaravel5/resources/views/pages 目录下。这个视图文件用于展示单个页面的内容。
以下是 show.blade.php 文件的内容:
```html
@extends('_layouts.default')
@section('content')
{{ $page->title }}
{{ $page->updated_at }}{{ $page->body }}@endsection
```
完成上述步骤后,当你点击首页中的任意文章标题时,将进入到文章的展示页面。这个页面会展示页面的标题、更新时间以及正文内容。至此,前台展示页面的搭建工作就完成了。
本文的内容就到这里结束了,希望对学习 Laravel 5 框架的你有一定的帮助。如果你有任何疑问或需要进一步的学习资源,请随时提问。让我们一起在编程的道路上不断前行!
(结尾)记得检查并优化你的网站SEO,以确保你的内容能被更多的用户找到和阅读。让我们继续 Laravel 5 的更多功能和优化技巧!
@foreach ($pages as $page)