Laravel6.X资源控制器Restful控制器教程

2020-02-01  本文已影响0人  前端组件库

Laravel资源控制器是非常简便的做增改删查的方式。那么我们就开始做一个例子。

1.执行命令做资源控制器,模型文件和工厂文件。

php artisan make:model Post -m -f
php artisan make:controller PostsController --resource --model=Post

第一个命令执行了以后做一个模型文件,连同迁移和工厂文件。
第二个命令创建一个资源控制器,对应这个模型。
我们先来看看资源控制器的内容:

<?php

namespace App\Http\Controllers;

use App\Post;
use Illuminate\Http\Request;

class PostsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Post  $post
     * @return \Illuminate\Http\Response
     */
    public function show(Post $post)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Post  $post
     * @return \Illuminate\Http\Response
     */
    public function edit(Post $post)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Post  $post
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Post $post)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Post  $post
     * @return \Illuminate\Http\Response
     */
    public function destroy(Post $post)
    {
        //
    }
}

这里就是我们要做的全部方法。接下来我们填充下假数据。

2.填充假数据

php artisan tinker
factory(\App\Post::class, 40)->create();

这样我们假数据就填充完了。接下来我们做视图文件。

3.加路由代码

Route::resource('posts', 'PostsController');

4.修改模型文件fillable属性 App/Post.php

protected $fillable = [ 'title', 'description'];

5.控制器代码:

<?php

namespace App\Http\Controllers;

use App\Post;
use Illuminate\Http\Request;

class PostsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $posts = Post::all();
        return view('posts.index', compact("posts"));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        return view('posts.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        Post::create($request->all());
        return redirect()->route('posts.index');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Post  $post
     * @return \Illuminate\Http\Response
     */
    public function show(Post $post)
    {
        return view('posts.show', compact('post'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Post  $post
     * @return \Illuminate\Http\Response
     */
    public function edit(Post $post)
    {
        return view('posts.edit', compact('post'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Post  $post
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Post $post)
    {
        $post->update($request->all());
        return redirect()->back();
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Post  $post
     * @return \Illuminate\Http\Response
     */
    public function destroy(Post $post)
    {
        $post->delete();
        return redirect()->route('posts.index');
    }
}

6.做视图文件

在resources/views/posts文件夹下面创建create.blade.php, index.blade.php, edit.blade.php, show.blade.php。
index.blade.php

@foreach($posts as $post)
    <a href="{{route('posts.show', $post->id)}}">{{$post->title}}</a><br>
    {{$post->description}}<br>
@endforeach

show.blade.php, 把删除按钮放在上面:

{{$post->title}}<br>
{{$post->description}}<br>

<form action="{{route('posts.destroy', $post->id)}}" method="post">
    @csrf
    @method('delete')
    <input type="submit" value="删除">
</form>

<a href="{{route('posts.edit')}}">修改</a>

create.blade.php的代码:

<form action="{{route('posts.store')}}" method="post">
    @csrf
    <input type="text" name="title" id="">
    <input type="text" name="description" id="">
    <input type="submit" value="提交">
</form>

edit.blade.php的代码:

<form action="{{route('posts.update', $post->id)}}" method="post">
    @csrf
    @method('PUT')
    <input type="text" name="title" value="{{$post->title}}">
    <input type="text" name="description" value="{{$post->description}}">
    <input type="submit" value="提交">
</form>
上一篇 下一篇

猜你喜欢

热点阅读