效果图
代码部分
资源控制器
NewsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class NewsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$newsList=DB::table("news")->orderBy('id','desc')->paginate(10);
return view('news.index',compact('newsList'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
return view('news.addnews');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
// dd($request->all());
$data=$request->except('_token');
$data['user_id']=1;
// dd($data);
$res=DB::table('news')->insert($data);
if($res){
return redirect('/news');
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
$news=DB::table('news')->where('id',$id)->first();
return view('news.show',compact('news'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
$news=DB::table('news')->find($id);
return view('news.edit',compact('news'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
// dd($request->all());
$news=$request->except('_token','_method');
$res=DB::table('news')->where('id',$id)->update($news);
return redirect('news');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
DB::table('news')->where('id',$id)->delete();
return redirect('news');
}
}
视图
grail.blade.php
<body>
<header>
</header>
<aside>
</aside>
<main>
@yield('main')
</main>
<aside>
</aside>
<footer>
</footer>
<style type="text/css" media="screen">
*{
margin: 0;
padding: 0;
}
body *{
background-color:lightblue;
}
body{
display: grid;
grid-template-rows: 160px minmax(400px,auto) 60px;
grid-template-columns:200px minmax(400px, 800px) 200px;
gap:2px;
place-content:center;
}
header,footer{
grid-column-end:span 3;
}
main{
padding: 10px;
}
</style>
</body>
index.blade.php
@extends('layout.grail')
@section('title','新闻列表')
@section('main')
<h2>新闻列表</h2>
<table class="table">
<thead>
<tr>
<th>编号</th><th>标题</th><th >作者</th><th>类别</th><th>操作</th>
</tr>
</thead>
<tbody>
@foreach($newsList as $news)
<tr>
<td>{
{
$news->id}}</td>
<td>
<a href="{
{route('news.show',$news->id)}}">{
{
$news->title}}</a>
</td>
<td>{
{
$news->user_id}}</td>
<td>{
{
$news->category_id}}</td>
<td class="operation">
<a href="{
{route('news.edit',$news->id)}}">修改</a>
<form action="{
{route('news.destroy',$news->id)}}" method="post">
@method('delete')
<button onclick="return confirm('您确定要删除吗?')">删除</button>
@csrf
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
{
{
$newsList->links('vendor.pagination.bootstrap-4') }}
@endsection
<style>
button{
border:none;
color: #0d6efd;
}
table a{
display: block;
text-decoration-line: none;
margin-right: 20px;
}
table a:hover{
text-decoration-line: underline;
}
.optgroup>a,button:hover {
text-decoration-line:underline;
}
.operation{
display: flex;
}
</style>
addNews.blade.php
@extends('layout.grail')
@section('title','添加新闻')
@section('main')
<form action="{
{route('news.store')}}" method="post">
<div class="form-group">
<label for="title">标题</label>
<input type="text" id="title" name="title" class="form-control">
</div>
<div class="form-group">
<label for="category_id">类别</label>
<select name="category_id" id="category_id" class="form-control">
<option value="0">请选择新闻类别</option>
<option value="1">时政要闻</option>
<option value="2">经济动态</option>
<option value="3">健康信息</option>
<option value="4">体育新闻</option>
<option value="5">娱乐八卦</option>
<option value="6">国际新闻</option>
</select>
</div>
<div class="form-group">
<label for="content">内容</label>
<textarea name="content" id="content" cols="30" rows="10" class="form-control" ></textarea>
</div>
<div>
<input type="submit" value="添加">
</div>
@csrf
</form>
@endsection
edit.blade.php
@extends('layout.grail')
@section('title','修改新闻')
@section('main')
<form action="{
{route('news.update',$news->id)}}" method="post">
@method('put')
<div class="form-group">
<label for="title">标题</label>
<input type="text" id="title" name="title"
class="form-control" value="{
{
$news->title}}">
</div>
<div class="form-group">
<label for="category_id">类别</label>
<select name="category_id" id="category_id" class="form-control">
<option value="0">请选择新闻类别</option>
<option value="1">时政要闻</option>
<option value="2">经济动态</option>
<option value="3">健康信息</option>
<option value="4">体育新闻</option>
<option value="5">娱乐八卦</option>
<option value="6">国际新闻</option>
</select>
</div>
<div class="form-group">
<label for="content">内容</label>
<textarea name="content" id="content" cols="30" rows="10" class="form-control" >
{
{
$news->content}}
</textarea>
</div>
<div>
<input type="submit" value="修改" >
</div>
@csrf
</form>
@endsection
show.blade.php
@extends('layout.grail')
@section('title',$news->title)
@section('main')
<div>
<div>
{
{
$news->title}}
</div>
<p>{
{
$news->user_id}}</p>
<div>{
{
$news->content}}</div>
</div>
@endsection