laravel视频 PHP100,30分钟用 Laravel 实现一个博客

完成增删改查吧: 首先完成 BlogController@index : 展示列表先来个入口链接,打开 home.blade.php{{-- 上面说过这里会添加一个按钮 --}}

点击这里查看我的博客编辑 BlogController@index => 这里还是再提醒一下吧,这是说 BlogController 的 index() 方法。控制器文件都在 app\Http\Controllers 中<?php

namespace App\Http\Controllers;

use App\Blog; //这里是使用命令创建控制器时,通过 --model=Blog 自动帮我们生成的

use Illuminate\Http\Request;

class BlogController extends Controller{

public function index()

{

// 查询数据,并且让查询结果是一个可分页对象

$blogs = Blog::orderBy('created_at', 'desc') // 调用 Blog模型 的静态方法 orderBy('根据created_at字段', '倒叙排序')

->paginate(6); // -> 链式操作:paginate(6) 即数据没页6条

// 跳转到视图并传值

return view('blog.index', [ //第一个参数是说,视图模板是 /resources/views/blog/index.blade.php 'blogs' => $blogs, //这里是说,我们给视图传递一个叫 $'blogs'的变量,值是前面我们查询的数据,也叫$blogs。

]); // view() 的第二参数也可以使用 view(..., compact('blogs'))

}此时刷新页面当然会报错了,因为我们的视图还不存在,新建文件夹 /resources/views/blog/index.blade.php@extends('layouts.app')

@section('content')

这是页面小标题

这里是内容

@endsection这就是我们所有页面的布局,可以复制一份,作为模板。完成视图里面的内容

文章列表

文章标题发布时间相关操作

{{-- 这里通过 @foreach 遍历数据 --}} @foreach ($blogs as $blog)

{{ $blog->title }}{{ $blog->created_at }}

@endforeach

{{-- 这里通过 $blogs->links() 来显示分页按钮 --}} {{ $blogs->links() }}

完成文章添加 添加入口链接, ../layouts/app.blade.php{{-- route('路由别名') 在视图上就是一个指向 BlogController@create 的链接 --}}

添加文章 完成文章的添加 BlogController@createpublic function create(){

return view('blog.create'); //载入视图

}编辑视图 重点:表单中添加@csrf告诉框架,这是我们自己的表单,不用担心csrf跨站请求伪造的攻击@extends('layouts.app')

@section('content')

添加文章

{{-- from.method="POST" action="通过 route()函数读取路由别名 " --}}

{{-- 声明 csrf 令牌 --}}

@csrf

文章标题

文章内容

发布新文章

@endsection所谓跨站请求伪造,可以理解为来自于其他ip的表单,恶意请求我们的服务器。Laravel提供了一种防范这种攻击的手段,即将自己的路由隐藏起来,只有带有 @csrf 声明的表单可以找得到接收表单信息的路由编辑 BlogController@storepublic function store(Request $request) //这里的 $request 是通过依赖注入的方法实例化的 Request 类的对象,包含的有所有请求的信息

{

// 我们只需要调用 Blog模型 的静态方法 create() 插入 $request->post() 数据即可

$blog = Blog::create($request->post()); //改方法的返回值是新插入的数据生成的对象

// redirect() 页面重定向

return redirect()->route('blog.show', $blog); // 这里我们将 $blog 作为参数请求 BlogController@show

}回到页面,点击提交,会发现报错了,Laravel是一个极其注重安全的框架,用户能修改哪些字段,必须要在模型文件中声明,因此打开 app\Blog.php 模型文件// 可填字段白名单

protected $fillable = [

'title', 'content'

];再次提交,页面一片空白,是因为我们的 BlogController@show 方法还没有写,不过你可以注意到地址栏已经发生了改变。

完成 show 方法public function show(Blog $blog) //这里已经通过依赖注入的形式帮我们实例化了 $blog

{

return view('blog.show', [

'blog' => $blog, //直接将$blog传给视图进行渲染

]);

}新建 ../blog/show.blade.php@extends('layouts.app')

@section('content')

文章详情

{{ $blog->title }}

发布时间{{ $blog->created_at }}


{{ $blog->content }}

@endsection刷新页面,文章就显示出来了。

完成我们的编辑入口链接: 在 ../blog/index.blade.php & show.blade.php 中合理的位置添加一个编辑按钮编辑文章完成 BlogController@editpublic function edit(Blog $blog){

return view('blog.edit', [

'blog' => $blog,

]);

}完成视图 重点:action声明文章编号,根据路由要求action在表单中使用@method伪造请求动作类型@extends('layouts.app')

@section('content')

编辑文章

{{-- action需要声明当前编辑的文章编号$blog->id --}}

{{-- 声明 csrf 令牌 --}}

@csrf

{{-- 伪造 PATCH 方法 --}}

@method("PATCH")

文章标题

文章内容

{{ $blog->content }}

发表于{{ $blog->created_at }}

修改于{{ $blog->updated_at }}

确认编辑

@endsection完成 BlogController@updatepublic function update(Request $request, Blog $blog){

$blog->update($request->post()); //调用 $blog对象->update(更新数据组成的数组) 更新

return redirect()->route('blog.show', $blog);

}完成删除功能 在 index.blade.php 和 show.blade.php 合理的位置插入删除按钮删除文章

{{-- 因为删除也需要 csrf 令牌认证,所以弄个表单 --}}

@csrf

{{-- 这里伪造DELETE请求 --}}

@method("DELETE")

“删除文章” 按钮其实是调用了一个 js 函数,我们在 ../layousts/app.blade.php 中完成完成 BlogController@delete 方法public function destroy(Blog $blog){

$blog->delete();

return redirect()->route('blog.index'); //跳转到首页

}增删改查完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值