[Laravel] Resource Controller 구현

Devbaul·2021년 9월 12일
0

Laravel

목록 보기
19/22
post-thumbnail

resource controller

php artisan make:controller PostController --resource

PostController 'CRUD' 구조

실습 코드

app/Http/Controller/PostController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PostController extends Controller
{

    private $posts = [
        1 => [
            'title' => 'Intro to Laravel',
            'content' => 'This is a short intro to Laravel',
            'is_new' => true,
            'has_comments' => true
        ],
        2 => [
            'title' => 'Intro to PHP',
            'content' => 'This is a short intro to PHP',
            'is_new' => false,
        ],
        3 => [
            'title' => 'Intro to Golang',
            'content' => 'This is a short intro to Golang',
            'is_new' => false,
        ]
    ];
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        return view('posts.index', ['posts' => $this -> posts]);
    }

    /**
     * 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  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        abort_if(!isset($this->posts[$id]), 404);

        return view('posts.show', ['post' => $this -> posts[$id]]);
    }

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

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

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

리소스풀 컨트롤러에 의해서 구성된 액션들

실제 리소스풀 컨트롤러에 의해서 구성된 액션들

  • 확인 방법
php artisan route:list

routes/web.php

  • 위의 코드로 제가 사용할 메소드는 index, show만 사용 하려 합니다.
    그러기 위해서는 only()를 사용하여 주면 지정한 것만 사용하게 됩니다.
  • 반대로 except()를 사용하게 된다면 원하는 메소드를 사용하지 않게 합니다.
//2개만 사용하겠다
Route::resource('posts', \App\Http\Controllers\PostController::class)->only(['index','show']);

//2개만 사용하지 않겠다
//Route::resource('posts', \App\Http\Controllers\PostController::class)->except(['index','show']);

결과

  • 이 전에 했던 실습과 똑같이 나오는 것을 확인 할 수 있습니다. 조금 복잡하다고 생각은 하고 있습니다. 아직 계속 해봐야 알 것 같은 구조입니다. ㅠㅠ

posts/index.blade.php

posts/show.blade.php

profile
자유로운 개발을 공부중

0개의 댓글