ホームページ > バックエンド開発 > PHPチュートリアル > PATCHリクエストメソッドを使用したノートの編集と更新

PATCHリクエストメソッドを使用したノートの編集と更新

WBOY
リリース: 2024-07-17 12:25:51
オリジナル
406 人が閲覧しました

Editing and Updating Notes using PATCH Request Method

フォームとリクエスト メソッドを使用した新しいメモの作成のフォローアップとして、PATCH リクエスト メソッドを使用してデータベース内の既存のメモを編集および更新する方法を検討します。

ユーザーがメモを編集したい場合、編集画面にアクセスする方法を提供する必要があります。ここで編集ボタンの出番です。

編集ボタンの追加

まず、ファイルから削除ボタンのコードを削除して、show.view.php の単一ノート画面のノートの下に編集ボタンを追加する必要があります。このボタンにより、ユーザーは編集画面に移動します。

<footer class="mt-6">
    <a href="/note/edit?id=<?= $note['id'] ?>" class="inline-flex justify-center rounded-md border border-transparent bg-gray-500 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">Edit</a>
</footer>
ログイン後にコピー

ノート表示ページのフッター部分に編集ボタンを配置しています。クリックすると、ユーザーは編集画面にリダイレクトされ、URL のパラメーターとしてノート ID が渡されます。

メモの編集

edit.php ファイルは編集プロセスを制御します。データベースからメモを取得し、ユーザーにメモを編集する権限を与えます。ユーザーが承認されている場合、編集画面が表示され、ユーザーはメモを変更できます。

<?php
use Core\App;
use Core\Database;

$db = App::resolve(Database::class);
$currentUserId = 1;

$note = $db->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 と currentuserID を比較して、ユーザーがメモを編集する権限を持っているかどうかを確認します。許可されると編集画面が表示されます。

ノートビューの編集

edit.view.php ファイルには、[更新] と [キャンセル] の 2 つのボタンを備えた編集用のノート本文を表示するコードが含まれています。

  • 更新ボタン: 更新されたメモをサーバーに送信し、データベースに保存します

  • キャンセル ボタン: 編集プロセスをキャンセルし、ユーザーをメモ画面にリダイレクトします。

<label for="body" class="block text-sm font-medium text-gray-700">Body</label>
<div class="mt-1">
    <textarea id="body" name="body" rows="3" class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm" placeholder="Here's an idea for a note..."><?= $note['body'] ?></textarea>
    <?php if (isset($errors['body'])) : ?>
        <p class="text-red-500 text-xs mt-2"><?= $errors['body'] ?></p>
    <?php endif; ?>
</div>

<div class="bg-gray-50 px-4 py-3 text-right sm:px-6 flex gap-x-4 justify-end items-center">
    <button type="button" class="text-red-500 mr-auto" onclick="document.querySelector('#delete-form').submit()">Delete</button>
    <a href="/notes" class="inline-flex justify-center rounded-md border border-transparent bg-gray-500 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">Cancel</a>
    <button type="submit" class="inline-flex justify-center rounded-md border border-transparent bg-indigo-600 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">Update</button>
</div>
ログイン後にコピー

ノート編集ビューでは、テキストエリアにノート本文が表示され、ユーザーが変更を加えることができます。 「更新」ボタンは、更新されたメモをサーバーに送信し、データベースに保存します。

ノートの更新

メモを更新するには、メモの検証とユーザーの承認をチェックする update.php という名前の新しいファイルを作成する必要があります。このファイルでは、承認されたユーザーのみが、データベースにすでに存在するメモの表示と編集を許可されます。

<?php
use Core\App;
use Core\Database;
use Core\Validator;

$db = App::resolve(Database::class);
$currentUserId = 1;

// find the corresponding note
$note = $db->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 リクエスト メソッドを使用してメモを簡単に編集および更新できます。

しっかりと理解していただけたと思います。

以上がPATCHリクエストメソッドを使用したノートの編集と更新の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート