양식 및 요청 방법을 사용하여 새 노트를 만드는 후속 작업으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!