laravel搭建博客实战的教程实例( 二 )


执行数据库迁移:
php artisan migrate登录MySQL,查看数据表 。
3、创建模型
利用 artisan 命令创建模型:
php artisan make:model Article打开模型文件,输入以下代码:
App/Article.php
namespace App; use IlluminateDatabaseEloquentModel; class Article extends Model { //对应的表 protected $table = 'articles'; //通过model可以写入的字段 protected $fillable = ['title', 'content', ];}4、存储逻辑代码
打开 ArticlesController.php 控制器,找到 store() 方法 。
app/Http/Controllers/ArticlesController.php
public function store(Request $request){ //数据验证 错误处理 $this->validate($request,['title'=>'required|max:50','content'=>'required|max:500',]); // 1 orm方式写入 $article = Article::create(['title'=>$request->title,'content'=>$request->content,]); //2 或者 /* $article = new Article();$article->title =$request->title;$article->content = $request->content;$article->save();*///3 db方式写入//insert()方法返回值为true 和 false//$res = DB::table('articles')->insert(['title'=>$request->title,'content'=>$request->content]); return redirect()->route('blog.index');}验证错误显示
@if (count($errors) > 0) <p class="alert alert-danger"><ul>@foreach($errors->all() as $error)<li>{{ $error }}</li>@endforeach</ul> </p>@endif七、文章列表展示
完成了添加文章功能后,就可以实现我们的文章列表展示页了 。
打开 ArticlesController.php 找到 index() 方法,添加代码如下:
app/Http/Controllers/ArticlesController.php
use AppArticle; public function index(){$articles = Article::orderBy('created_at','asc')->get();return view('articles.index', ['articles'=>$articles]); }视图index.blade.php
@extends('layouts.art')@section('content')<a class="btn btn-primary" href=https://www.isolves.com/it/cxkf/yy/php/2020-08-18/"{{route('blog.create')}}" rel="external nofollow" >添加文章@foreach($articles as $article)

{{$article->title}} 阅读 修改

{{ csrf_field() }}{{ method_field('DELETE') }}

@endforeach{!! $articles->render() !!} @endsection
八、编辑文章表单
编辑文章表单其实和之前创建的新建文章表单很类似,只是需要额外将现有的数据读取出来填在表单上 。
首先我们在文章列表页的每个文章上添加一个编辑按钮:
视图:
@extends('layouts.art')@section('content')<form class="form-horizontal" method="post" action="{{route('blog.update',$article->id)}}">{{ csrf_field() }}{{ method_field('PATCH') }} <p class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">标题</label> <p class="col-sm-10"><input type="title" class="form-control" id="title" name="title" value=https://www.isolves.com/it/cxkf/yy/php/2020-08-18/"{{ $article->title }}">

@endsection
注意这段代码中的 {{ method_field('PATCH') }} ,这是跨站方法伪造,HTML 表单没有支持 PUT、PATCH 或 DELETE 动作 。所以在从 HTML 表单中调用被定义的 PUT、PATCH 或 DELETE 路由时,你将需要在表单中增加隐藏的 _method 字段来伪造该方法,详情参考 官方文档 。
控制器
//展示修改模板public function edit($id){$article = Article::findOrFail($id);return view('art.edit',['article'=>$article]); }//执行修改public function update(Request $request, $id){$this->validate($request, ['title' => 'required|max:50','content'=>'required|max:500',]);$article = Article::findOrFail($id);$article->update(['title' => $request->title,'content' => $request->content,]);return redirect()->route('blog.index'); }


推荐阅读