作為使用表單和請求方法建立新註解的後續操作,我們現在將探索如何使用 PATCH 請求方法編輯和更新資料庫中的現有註釋。
當使用者想要編輯筆記時,我們需要為他們提供一種存取編輯畫面的方式。這就是編輯按鈕的用武之地。
首先,我們需要透過從檔案中刪除刪除按鈕程式碼,在 show.view.php 中的單一註解畫面上的註解下方新增一個編輯按鈕。此按鈕會將使用者移至編輯畫面。
編輯按鈕位於筆記顯示頁面的頁尾部分。點擊後,它會將使用者重定向到編輯螢幕,並將註釋 ID 作為 URL 中的參數傳遞。
edit.php 檔案控制編輯過程。它從資料庫中檢索註釋並授權使用者編輯註釋。如果使用者獲得授權,則會顯示編輯螢幕,允許使用者對註釋進行更改。
query('select * from notes where id = :id', [ 'id' => $_GET['id'] ])->findOrFail(); authorize($note['user_id'] === $currentUserId); view("notes/edit.view.php", [ 'heading' => 'Edit Note', 'errors' => [], 'note' => $note ]);
edit.php 檔案使用 Database 類別從資料庫中檢索註解。然後,它透過將 user_id 與當前使用者 ID 進行比較來檢查使用者是否有權編輯註釋。如果獲得授權,則會顯示編輯畫面。
edit.view.php 檔案包含顯示註釋正文以供編輯的程式碼,有兩個按鈕:更新和取消。
更新按鈕:將更新的筆記提交到伺服器並儲存在資料庫中
取消按鈕:取消編輯程序並將使用者重新導向回註解畫面。
= $errors['body'] ?>
編輯註釋視圖在文字區域中顯示註釋正文,允許使用者進行變更。更新按鈕將更新的筆記提交到伺服器並將其儲存在資料庫中。
要更新註釋,我們需要建立一個名為 update.php 的新文件,用於檢查註釋的驗證並檢查使用者的授權。該文件僅允許授權使用者檢視和編輯資料庫中已存在的註解。
query('select * from notes where id = :id', [ 'id' => $_POST['id'] ])->findOrFail(); // Check authorization authorize($note['user_id'] === $currentUserId); // Check validation $errors = []; if (!Validator::string($_POST['body'], 1, 100000)) { $errors['body'] = 'A body of no more than 1,000 characters is required.'; } // if no validation errors, then update if (count($errors)) { return view('notes/edit.view.php', [ 'heading' => 'Edit Note', 'errors' => $errors, 'note' => $note ]); } $db->query('update notes set body = :body where id = :id', [ 'id' => $_POST['id'], 'body' => $_POST['body'] ]); // redirect the user header('location: /notes'); die();
為了實現筆記的編輯和更新,我們需要在route.php中加入以下路由:
$router->get('/note/edit', 'controllers/notes/edit.php'); $router->patch('/note', 'controllers/notes/update.php');
這些路由將啟用使用 PATCH 請求方法編輯和更新註解。
當使用者想要編輯註釋時,使用者將被帶到編輯螢幕,使用者可以在其中對註釋進行更改。當使用者提交更改時,將呼叫 update.php 檔案。該文件將檢查使用者是否有權編輯註釋以及註釋的驗證是否正確。如果兩項檢查都通過,則註釋將在資料庫中更新,並且使用者將被重定向回註釋畫面。如果任一檢查失敗,使用者將被重新導向回編輯畫面並顯示錯誤訊息。
透過執行以下步驟,使用者可以使用 PATCH 請求方法輕鬆編輯和更新註解。
希望您已經清楚地理解了。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3