續昨日,今天來把Delete跟Update完成。
新的Update Route:
// web.php
Route::post('edit/{id}', 'UserController@edit')->name('edit');
Route::post('update/{id}', 'UserController@update')->name('update');
Route::post('delete/{id}', 'UserController@delete')->name('destroy');
做了些修改。
本來是想把每個Card拆開,我要編輯貼文只要動到要編輯的部分,但不知道為什麼一直噴錯,所以先把View分成Home跟Edit,用別的方式先做出可以用的更新功能。Edit其實就是把原本預設的首頁換個樣子而已,所以我只截重要的部分。
// home.blade.php
@if(isset($posts))
@foreach($posts as $post)
<div class="card">
<div class="card-header">{{ $post->name }}</div>
<div class="card-body">
<p>{{ $post->content }}</p>
</div>
@if(($post->user_id) === (Auth::user()->id))
<form method="POST" action="{{ route('edit', $post->id) }}">
@csrf
<button class="btn btn-primary">Edit</button>
</form>
<form action="{{ route('destroy', $post->id) }}" method="POST">
@csrf
<button class="btn btn-danger">Delete</button>
</form>
@endif
</div>
@endforeach
@endif
// edit.blade.php
<div class="card-body">
@if(isset($post))
<form method="POST" action="{{ route('update', $post->post_id) }}">
@csrf
<textarea name="content">{{ $post->content }}</textarea>
<button type="submit" class="btn btn-primary">Edit</button>
</form>
@endif
</div>
真夠醜的⋯⋯(遮眼睛
有沒有發現我把Posts Table的id
改成post_id
了?嘿對,在寫的過程中發現Delete跟Update功能會出錯,只能刪一篇貼文,後來發現是Posts Table跟Users Table的id
欄位衝到了,所以就改掉變成post_id
。
路由使用方式也改了,用{{ route('update', $post->post_id) }}
這種方式會比較方便傳資料。
Update用到兩個方法edit
跟update
,edit
是用來顯示編輯畫面,update
是把修改的資料存回去資料庫。
// UserController.php
public function edit($id)
{
$post = DB::table('posts')
->where('post_id', '=', $id)
->first();
return view('edit')->with('post', $post);
}
public function update(Request $request, $id)
{
$post = DB::table('posts')
->where('post_id', '=', $id)
->update(['content' => $request->input('content')]);
return redirect()->route('home');
}
OK,來看看。
刪除就不貼截圖了,更新畫面如下:
預設兩個使用者,明天來戰留言 (๑•̀ㅂ•́)و✧