iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
1
自我挑戰組

來用Laravel做點什麼吧系列 第 26

D26 超簡易版FB - CRUD(4)

續昨日,今天來把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用到兩個方法editupdateedit是用來顯示編輯畫面,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,來看看。

刪除就不貼截圖了,更新畫面如下:

預設兩個使用者,明天來戰留言 (๑•̀ㅂ•́)و✧


上一篇
D25 超簡易版FB - CRUD(3)
下一篇
D27 超簡易版FB - 留言(1)
系列文
來用Laravel做點什麼吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言