IT/PHP
Laravel 8 - CRUD(4)
Sungjun_
2021. 1. 5. 15:38
CRUD 중 Update입니다.
BoardController.php 파일에 edit 메서드를 추가해줍니다.
public function edit($id){
$board = Board::where('id', $id) -> first();
return view('boards.edit', compact('board'));
}
web.php에 라우트를 추가해줍니다.
Route::get('boards/{board}/edit', [BoardController::class, 'edit']) -> name('boards.edit');
show.blade.php 파일을 열어 수정 및 삭제 버튼을 만들어줍니다.
@extends('layouts.app')
@section('section')
<section class="w-2/3 mx-auto mt-16">
<div class="border-b border-gray-300 mb-8 pl-1 pb-2 text-xl font-bold">
{{$board -> title}}
</div>
<div class="text-lg">
{{$board -> story}}
</div>
<div class="mt-8">
<a href="{{route('boards.edit', $board -> id)}}">
<button class="px-4 py-1 text-white text-lg bg-blue-500 hover:bg-blue-700">수정</button>
</a>
<button class="px-4 py-1 text-white text-lg bg-red-500 hover:bg-red-700">삭제</button>
</div>
</section>
@stop
edit.blade.php 파일을 만들어줍시다.
@extends('layouts.app')
@section('section')
<section class="w-2/3 mx-auto mt-16">
<form action="/boards/{{$board -> id}}" method="post">
@method('PUT')
@csrf
<p>
<label for="title" class="text-xl">제목 : </label>
<input type="text" id="title" name="title" value="{{$board -> title}}"
class="outline-none border border-blue-400 w-1/2 pl-1 py-1 rounded-lg">
</p>
<p class="mt-4">
<label for="story" class="text-xl">내용</label>
<textarea id="story" name="story"
class="outline-none border border-blue-400 w-full h-64 mt-2 rounded-lg resize-none">{{$board -> story}}</textarea>
</p>
<p class="mt-8">
<input type="submit" value="수정"
class="px-4 py-1 bg-green-500 hover:bg-green-700 text-lg text-white">
<input type="button" value="취소" onclick="history.back()"
class="px-4 py-1 ml-6 bg-red-500 hover:bg-red-700 text-lg text-white">
</p>
</form>
</section>
@stop
BoardController.php에 update 메소드를 추가합니다.
public function update(Request $request, $id){
$validation = $request -> validate([
'title' => 'required',
'story' => 'required'
]);
$board = Board::where('id', $id) -> first();
$board -> title = $validation['title'];
$board -> story = $validation['story'];
$board -> save();
return redirect() -> route('boards.show', $id);
}
update 메소드가 실행되면 원래 글로 돌아가게 했습니다.
web.php에 update 메서드를 추가합니다.
Route::put('boards/{board}', [BoardController::class, 'update']) -> name('boards.update');
이제 수정 버튼을 눌러서 글을 수정해봅시다.
제대로 수정된 것을 확인할 수 있습니다.