」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 PATCH 請求方法編輯和更新註釋

使用 PATCH 請求方法編輯和更新註釋

發佈於2024-08-19
瀏覽:181

Editing and Updating Notes using PATCH Request Method

作為使用表單和請求方法建立新註解的後續操作,我們現在將探索如何使用 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'] ?>

Cancel

編輯註釋視圖在文字區域中顯示註釋正文,允許使用者進行變更。更新按鈕將更新的筆記提交到伺服器並將其儲存在資料庫中。

更新筆記

要更新註釋,我們需要建立一個名為 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 請求方法輕鬆編輯和更新註解。

希望您已經清楚地理解了。

版本聲明 本文轉載於:https://dev.to/ghulam_mujtaba_247/editing-and-updating-notes-using-patch-request-method-14k7?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    程式設計 發佈於2025-04-19
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    程式設計 發佈於2025-04-19
  • 如何有效地選擇熊貓數據框中的列?
    如何有效地選擇熊貓數據框中的列?
    在處理數據操作任務時,在Pandas DataFrames 中選擇列時,選擇特定列的必要條件是必要的。在Pandas中,選擇列的各種選項。 選項1:使用列名 如果已知列索引,請使用ILOC函數選擇它們。請注意,python索引基於零。 df1 = df.iloc [:,0:2]#使用索引0和1 ...
    程式設計 發佈於2025-04-19
  • 如何使用Depimal.parse()中的指數表示法中的數字?
    如何使用Depimal.parse()中的指數表示法中的數字?
    在嘗試使用Decimal.parse(“ 1.2345e-02”中的指數符號表示法表示的字符串時,您可能會遇到錯誤。這是因為默認解析方法無法識別指數符號。 成功解析這樣的字符串,您需要明確指定它代表浮點數。您可以使用numbersTyles.Float樣式進行此操作,如下所示:[&& && && ...
    程式設計 發佈於2025-04-19
  • 如何使用PHP從XML文件中有效地檢索屬性值?
    如何使用PHP從XML文件中有效地檢索屬性值?
    從php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    程式設計 發佈於2025-04-19
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-04-19
  • 使用jQuery如何有效修改":after"偽元素的CSS屬性?
    使用jQuery如何有效修改":after"偽元素的CSS屬性?
    在jquery中了解偽元素的限制:訪問“ selector 嘗試修改“:”選擇器的CSS屬性時,您可能會遇到困難。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    程式設計 發佈於2025-04-19
  • 哪種在JavaScript中聲明多個變量的方法更可維護?
    哪種在JavaScript中聲明多個變量的方法更可維護?
    在JavaScript中聲明多個變量:探索兩個方法在JavaScript中,開發人員經常遇到需要聲明多個變量的需要。對此的兩種常見方法是:在單獨的行上聲明每個變量: 當涉及性能時,這兩種方法本質上都是等效的。但是,可維護性可能會有所不同。 第一個方法被認為更易於維護。每個聲明都是其自己的語句,使...
    程式設計 發佈於2025-04-19
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-04-19
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-04-19
  • 在PHP中如何高效檢測空數組?
    在PHP中如何高效檢測空數組?
    在PHP 中檢查一個空數組可以通過各種方法在PHP中確定一個空數組。如果需要驗證任何數組元素的存在,則PHP的鬆散鍵入允許對數組本身進行直接評估:一種更嚴格的方法涉及使用count()函數: if(count(count($ playerList)=== 0){ //列表為空。 } 對...
    程式設計 發佈於2025-04-19
  • Java開發者如何保護數據庫憑證免受反編譯?
    Java開發者如何保護數據庫憑證免受反編譯?
    在java 在單獨的配置文件保護數據庫憑證的最有效方法中存儲憑據是將它們存儲在單獨的配置文件中。該文件可以在運行時加載,從而使登錄數據從編譯的二進製文件中遠離。 使用prevereness class import java.util.prefs.preferences; 公共類示例{ 首選...
    程式設計 發佈於2025-04-19
  • 為什麼我的CSS背景圖像出現?
    為什麼我的CSS背景圖像出現?
    故障排除:CSS背景圖像未出現 ,您的背景圖像儘管遵循教程說明,但您的背景圖像仍未加載。圖像和样式表位於相同的目錄中,但背景仍然是空白的白色帆布。 而不是不棄用的,您已經使用了CSS樣式: bockent {背景:封閉圖像文件名:背景圖:url(nickcage.jpg); 如果您的html,cs...
    程式設計 發佈於2025-04-19
  • 為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    程式設計 發佈於2025-04-19

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3