”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 PATCH 请求方法编辑和更新注释

使用 PATCH 请求方法编辑和更新注释

发布于2024-08-19
浏览:362

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]删除
最新教程 更多>
  • 如何处理PHP文件系统功能中的UTF-8文件名?
    如何处理PHP文件系统功能中的UTF-8文件名?
    在PHP的Filesystem functions中处理UTF-8 FileNames 在使用PHP的MKDIR函数中含有UTF-8字符的文件很多flusf-8字符时,您可能会在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    编程 发布于2025-04-16
  • JavaScript事件处理中如何保留实例作用域:通过变量别名捕获“this”
    JavaScript事件处理中如何保留实例作用域:通过变量别名捕获“this”
    在事件处理程序中的acpoping:javascript中的“ this” conundrum 在JAVAScript中,实例方法用作事件处理程序可以导致求程问题。当触发事件处理程序时,“此”的范围从预期的实例转移到调用回调的元素。这需要使用变量来“捕获”并维护实例的范围。声明“自我”变量以使“别...
    编程 发布于2025-04-16
  • .NET XML序列化中如何控制命名空间前缀?
    .NET XML序列化中如何控制命名空间前缀?
    .NET XML序列化:命名空间前缀控制 .NET 提供两种主要的 XML 序列化机制:DataContractSerializer 和 XmlSerializer。然而,它们默认生成的命名空间前缀由内部机制管理,这限制了自定义前缀的需求。 利用 XmlSerializerNamespaces 若...
    编程 发布于2025-04-16
  • 在Matplotlib中如何创建可重用的AxesSubplot对象?
    在Matplotlib中如何创建可重用的AxesSubplot对象?
    在matplotlib 从图实例中解除AxessSubplot创建的情况,人们可以将传递轴实例的功能考虑到函数。例如: def plot(x,y,ax = none): 如果斧头没有: ax = plt.gca()#获取当前轴实例(默认) ax.plot(x,y,&...
    编程 发布于2025-04-16
  • 如何避免Go语言切片时的内存泄漏?
    如何避免Go语言切片时的内存泄漏?
    ,a [j:] ...虽然通常有效,但如果使用指针,可能会导致内存泄漏。这是因为原始的备份阵列保持完整,这意味着新切片外部指针引用的任何对象仍然可能占据内存。 copy(a [i:] 对于k,n:= len(a)-j i,len(a); k
    编程 发布于2025-04-16
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-04-16
  • Java静态初始化块使用时机及原因
    Java静态初始化块使用时机及原因
    在Java中理解静态初始化块,静态初始化块提供了一种特殊的机制,可以在类中初始化静态字段。静态字段仅初始化一次,并在类的所有实例中共享相同的值。虽然可以在声明中的静态字段中分配值,但在某些情况下,这种方法是不切实际的。为什么使用静态初始化障碍?在其声明点上无法确定静态字段的值。例如,想象一下您的字...
    编程 发布于2025-04-16
  • 为什么不使用CSS`content'属性显示图像?
    为什么不使用CSS`content'属性显示图像?
    在Firefox extemers属性为某些图像很大,&& && && &&华倍华倍[华氏华倍华氏度]很少见,却是某些浏览属性很少,尤其是特定于Firefox的某些浏览器未能在使用内容属性引用时未能显示图像的情况。这可以在提供的CSS类中看到:。googlepic { 内容:url(&#...
    编程 发布于2025-04-16
  • 左连接为何在右表WHERE子句过滤时像内连接?
    左连接为何在右表WHERE子句过滤时像内连接?
    左JOIN CONUNDRUM:WITCHING小时在数据库Wizard的领域中变成内在的加入很有趣,当将c.foobar条件放置在上面的Where子句中时,据说左联接似乎会转换为内部连接。仅当满足A.Foo和C.Foobar标准时,才会返回结果。为什么要变形?关键在于其中的子句。当左联接的右侧值...
    编程 发布于2025-04-16
  • 在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在C中的显式删除 在C中的动态内存分配时,开发人员通常会想知道是否有必要在heap-procal extrable exit exit上进行手动调用“ delete”操作员,但开发人员通常会想知道是否需要手动调用“ delete”操作员。本文深入研究了这个主题。 在C主函数中,使用了动态分配变量(H...
    编程 发布于2025-04-16
  • 无需刷新页面,如何重新加载CSS?
    无需刷新页面,如何重新加载CSS?
    不用页面refresh 重新加载CSS 一个常见的UX Enhancement是启用Live CSS编辑,使用户可以立即看到更改而无需重新加载页面。了解处理样式更新的最佳方法可以显着简化此过程。解决方案: 的挑战很大,请考虑动态性动态性动态多多,以动态操纵样式图。以下代码片段演示了一种有效的方法...
    编程 发布于2025-04-16
  • 实现IValidatableObject条件验证:属性级别与情景忽略
    实现IValidatableObject条件验证:属性级别与情景忽略
    实现 IValidatableObject 中的条件验证:属性级特性和基于场景的忽略 问题: 我知道 IValidatableObject 可用于在比较属性时进行对象验证。但是,我希望使用属性来验证单个属性,并在某些场景中忽略特定的属性失败。我的以下实现是否不正确? public class Va...
    编程 发布于2025-04-16
  • 使用Pandas read_csv解析带不规则分隔符的数据方法
    使用Pandas read_csv解析带不规则分隔符的数据方法
    在pandas read_csv 以解决这一挑战,pandas为定义分离器提供了多功能选项。一种方法涉及采用正则表达式(REGEX)。通过在READ_CSV中使用定界符参数,您可以指定捕获所需分离器的正则表达式模式。这使您可以考虑空间和选项卡的组合,确保准确解析。另外,您可以利用与python ...
    编程 发布于2025-04-16
  • Python中何时用"try"而非"if"检测变量值?
    Python中何时用"try"而非"if"检测变量值?
    使用“ try“ vs.” if”来测试python 在python中的变量值,在某些情况下,您可能需要在处理之前检查变量是否具有值。在使用“如果”或“ try”构建体之间决定。“ if” constructs result = function() 如果结果: 对于结果: ...
    编程 发布于2025-04-16
  • input: Why Does "Warning: mysqli_query() expects parameter 1 to be mysqli, resource given" Error Occur and How to Fix It?

output: 解决“Warning: mysqli_query() 参数应为 mysqli 而非 resource”错误的解析与修复方法
    input: Why Does "Warning: mysqli_query() expects parameter 1 to be mysqli, resource given" Error Occur and How to Fix It? output: 解决“Warning: mysqli_query() 参数应为 mysqli 而非 resource”错误的解析与修复方法
    mysqli_query()期望参数1是mysqli,resource给定的,尝试使用mysql Query进行执行MySQLI_QUERY_QUERY formation,be be yessqli:sqli:sqli:sqli:sqli:sqli:sqli: mysqli,给定的资源“可能发...
    编程 发布于2025-04-16

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3