> 백엔드 개발 > PHP 튜토리얼 > PATCH 요청 방법을 사용하여 메모 편집 및 업데이트

PATCH 요청 방법을 사용하여 메모 편집 및 업데이트

WBOY
풀어 주다: 2024-07-17 12:25:51
원래의
405명이 탐색했습니다.

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>
로그인 후 복사

수정 버튼은 노트 표시 페이지의 바닥글 섹션에 있습니다. 클릭하면 사용자를 편집 화면으로 리디렉션하고 노트 ID를 URL의 매개변수로 전달합니다.

메모 편집

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 파일은 데이터베이스 클래스를 사용하여 데이터베이스에서 메모를 검색합니다. 그런 다음 user_id를 현재 userID와 비교하여 사용자에게 메모를 편집할 권한이 있는지 확인합니다. 인증을 하면 편집 화면이 나옵니다.

노트 보기 편집

edit.view.php 파일에는 업데이트 및 취소라는 두 개의 버튼이 있는 편집용 노트 본문을 표시하는 코드가 포함되어 있습니다.

  • 업데이트 버튼: 업데이트된 메모를 서버에 제출하고 데이터베이스에 저장합니다

  • 취소 버튼: 편집 과정을 취소하고 사용자를 메모 화면으로 다시 리디렉션합니다.

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿