一、文章列表,新增、编辑和删除
1,编辑 App\Http\Requests\ArticleRequest.php 验证器
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class ArticleRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { $id = $this->route(‘id‘); return [ "title" => ‘required|unique:articles,title,‘.$id, "content" => "required" ]; } public function messages() { return [ "title.required" => "标题不能为空", "title.unique" =>"标题不能重复", "content.required" =>"内容不能为空" ]; } }
2,编辑 App\Http\Controllers\Admin\ArticleController.php
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Requests\ArticleRequest; use App\Models\Admin\Article; use App\models\Admin\Cate; use Illuminate\Http\Request; class ArticleController extends Controller { //文章 public function index(){ $data = Article::paginate(5);//获取文章表数据并分页,每页展示 5 条记录 return view(‘admin.article.index‘,compact(‘data‘));//compact()是分配数据 } public function add(){ $cateRes = Cate::all(); return view(‘admin.article.add‘,compact(‘cateRes‘)); } public function addSave(ArticleRequest $request){//Request $request 依赖注入 //dd($request->all()); //打印接收到的数据 $Article = Article::create($request->all()); //Article模型create对象往数据表添加数据 if($Article->id){ return redirect()->route(‘admin.article.index‘)->with(‘success-msg‘,‘添加文章成功!‘); }else{ return redirect()->route(‘admin.article.index‘)->with(‘danger-msg‘,‘添加文章失败!‘); } } public function edit(int $id){//$id是接收到的ID $Article = Article::find($id);//通过ID在数据库查找对应文章信息 $cateRes = Cate::all(); return view(‘admin.article.edit‘,compact(‘Article‘,‘cateRes‘)); //compact(‘Article‘)是分配数据到模板 } public function editSave(ArticleRequest $request,int $id){ $Article = Article::find($id); $Article -> title = $request->input(‘title‘); $Article -> keywords = $request->input(‘keywords‘); $Article -> description = $request->input(‘description‘); $Article -> cate_id = $request->input(‘cate_id‘); $Article -> content = $request->input(‘content‘); if($Article->save()){ return redirect()->route(‘admin.article.index‘)->with(‘success-msg‘,‘修改文章成功!‘); }else{ return redirect()->back()->with(‘danger-msg‘,‘修改文章失败!‘); } } public function delete(Request $request,int $id){ $del = Article::destroy($id); if($del){ return redirect()->back()->with(‘success-msg‘,‘删除文章成功!‘); }else{ return redirect()->back()->with(‘danger-msg‘,‘删除文章失败!‘); } } }
3,\resources\views\Admin\Article\add.blade.php 模板编辑如下
@extends(‘Admin.Layout.main‘) @section(‘content‘) <!-- Page Breadcrumb --> <div class="page-breadcrumbs"> <ul class="breadcrumb"> <li> <a href="#">系统</a> </li> <li> <a href="#">文章管理</a> </li> <li class="active">添文章</li> </ul> </div> <!-- /Page Breadcrumb --> <!-- Page Body --> <div class="page-body"> @include(‘Admin.Layout.msg‘) <div class="row"> <div class="col-lg-12 col-sm-12 col-xs-12"> <div class="widget"> <div class="widget-header bordered-bottom bordered-blue"> <span class="widget-caption">新增文章</span> </div> <div class="widget-body"> <div id="horizontal-form"> <form class="form-horizontal" role="form" action="{{route(‘admin.article.add‘)}}" method="post"> @csrf <div class="form-group"> <label for="title" class="col-sm-2 control-label no-padding-right">标题</label> <div class="col-sm-6"> <input class="form-control" id="title" placeholder="" name="title" required="" type="text"> </div> <p class="help-block col-sm-4 red">* 必填</p> </div> <div class="form-group"> <label for="keywords" class="col-sm-2 control-label no-padding-right">关键词</label> <div class="col-sm-6"> <input class="form-control" id="keywords" placeholder="" name="keywords" type="text"> </div> </div> <div class="form-group"> <label for="description" class="col-sm-2 control-label no-padding-right">描述</label> <div class="col-sm-6"> <textarea class="form-control" id="description" name="description" ></textarea> </div> </div> <div class="form-group"> <label for="" class="col-sm-2 control-label no-padding-right">所属分类</label> <div class="col-sm-6"> <select name="cate_id"> <option value="0">选择分类</option> @foreach($cateRes as $cate) <option value="{{$cate->id}}">{{$cate->cate_name}}</option> @endforeach </select> </div> </div> <div class="form-group"> <label for="content" class="col-sm-2 control-label no-padding-right">内容</label> <div class="col-sm-6"> <textarea class="form-control" id="content" name="content" required="" ></textarea> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default">保存信息</button> </div> </div> </form> </div> </div> </div> </div> </div> </div> <!-- /Page Body --> @endsection
4,\resources\views\Admin\Article\edit.blade.php 模板编辑如下
@extends(‘Admin.Layout.main‘) @section(‘content‘) <!-- Page Breadcrumb --> <div class="page-breadcrumbs"> <ul class="breadcrumb"> <li> <a href="#">系统</a> </li> <li> <a href="#">文章管理</a> </li> <li class="active">编辑文章</li> </ul> </div> <!-- /Page Breadcrumb --> <!-- Page Body --> <div class="page-body"> @include(‘Admin.Layout.msg‘) <div class="row"> <div class="col-lg-12 col-sm-12 col-xs-12"> <div class="widget"> <div class="widget-header bordered-bottom bordered-blue"> <span class="widget-caption">编辑文章</span> </div> <div class="widget-body"> <div id="horizontal-form"> <form class="form-horizontal" role="form" action="{{route(‘admin.article.edit‘,[‘id‘=>$Article[‘id‘]])}}" method="post"> @csrf <div class="form-group"> <label for="title" class="col-sm-2 control-label no-padding-right">标题</label> <div class="col-sm-6"> <input class="form-control" id="title" value="{{$Article[‘title‘]}}" name="title" required="" type="text"> </div> <p class="help-block col-sm-4 red">* 必填</p> </div> <div class="form-group"> <label for="keywords" class="col-sm-2 control-label no-padding-right">关键词</label> <div class="col-sm-6"> <input class="form-control" id="keywords" value="{{$Article[‘keywords‘]}}" name="keywords" type="text"> </div> </div> <div class="form-group"> <label for="description" class="col-sm-2 control-label no-padding-right">描述</label> <div class="col-sm-6"> <textarea class="form-control" id="description" name="description" >{{$Article[‘description‘]}}</textarea> </div> </div> <div class="form-group"> <label for="" class="col-sm-2 control-label no-padding-right">所属分类</label> <div class="col-sm-6"> <select name="cate_id"> <option value="0">选择分类</option> @foreach($cateRes as $cate) <option value="{{$cate->id}}" @if($cate->id == $Article->cate_id)selected="selected"@endif>{{$cate->cate_name}}</option> @endforeach </select> </div> </div> <div class="form-group"> <label for="content" class="col-sm-2 control-label no-padding-right">内容</label> <div class="col-sm-6"> <textarea class="form-control" id="content" name="content" required="" >{{$Article[‘content‘]}}</textarea> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default">保存信息</button> </div> </div> </form> </div> </div> </div> </div> </div> </div> <!-- /Page Body --> @endsection
5,\resources\views\Admin\Article\index.blade.php 模板编辑如下
@extends(‘Admin.Layout.main‘) @section(‘content‘) <!-- Page Breadcrumb --> <div class="page-breadcrumbs"> <ul class="breadcrumb"> <li> <a href="#">系统</a> </li> <li class="active">文章管理</li> </ul> </div> <!-- /Page Breadcrumb --> <!-- Page Body --> <div class="page-body"> @include(‘admin.Layout.msg‘) <button type="button" tooltip="添加文章" class="btn btn-sm btn-azure btn-addon" onclick="javascript:window.location.href = ‘{{route(‘admin.article.add‘)}}‘"> <i class="fa fa-plus"></i> Add </button> <div class="row"> <div class="col-lg-12 col-sm-12 col-xs-12"> <div class="widget"> <div class="widget-body"> <div class="flip-scroll"> <table class="table table-bordered table-hover"> <thead class=""> <tr> <th width="6%" class="text-center">ID</th> <th>文章名称</th> <th>所属分类</th> <th>发布时间</th> <th width="20%" class="text-center">操作</th> </tr> </thead> <tbody> @foreach($data as $article) <tr> <td class="text-center">{{$article[‘id‘]}}</td> <td>{{$article[‘title‘]}}</td> <td>{{$article->cate->cate_name}}</td> <td>{{$article[‘created_at‘]}}</td> <td align="center"> <a href="{{route(‘admin.article.edit‘,array(‘id‘=>$article[‘id‘]))}}" class="btn btn-primary btn-sm shiny"> <i class="fa fa-edit"></i> 编辑 </a> <a href="#" onclick="bootbox_confirm(‘{{route(‘admin.article.delete‘,array(‘id‘=>$article[‘id‘]))}}‘)" class="btn btn-danger btn-sm shiny"> <i class="fa fa-trash-o"></i> 删除 </a> </td> </tr> @endforeach </tbody> </table> <div class="row DTTTFooter"> <div class="col-sm-6"> {{--<div class="dataTables_info" id="simpledatatable_info" role="alert" aria-live="polite" aria-relevant="all">Showing 1 to 5 of 25 entries</div>--}} </div> <div class="col-sm-6"> <div class="dataTables_paginate paging_bootstrap" id="simpledatatable_paginate"> <!-- 分页 --> {{$data -> links()}} </div> </div> </div> </div> <div> </div> </div> </div> </div> </div> </div> <!-- /Page Body --> @endsection
二、模型关联
App\Models\Admin\Article.php 模型文件 新增代码
//模型关联 public function cate(){ return $this->hasOne(Cate::class,‘id‘,‘cate_id‘); }
如图
\resources\views\Admin\Article\index.blade.php模板调用关联的数据
<td>{{$article->cate->cate_name}}</td>
如下图
END
【任务39】:文章的编辑和删除 和 【任务40】:模型关联展示分类名称
原文:https://www.cnblogs.com/pensive/p/12922522.html