首页 > 其他 > 详细

【任务39】:文章的编辑和删除 和 【任务40】:模型关联展示分类名称

时间:2020-05-20 13:08:19      阅读:63      评论:0      收藏:0      [点我收藏+]

一、文章列表,新增、编辑和删除

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" =>"内容不能为空"

        ];
    }
}
View Code

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‘,‘删除文章失败!‘);
        }

    }
}
View Code

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
View Code

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
View Code

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
View Code

二、模型关联

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!