В продолжение создания новых заметок с использованием форм и методов запроса мы теперь рассмотрим, как редактировать и обновлять существующие заметки в базе данных с помощью метода запроса PATCH.
Когда пользователь хочет отредактировать заметку, нам необходимо предоставить ему доступ к экрану редактирования. Здесь на помощь приходит кнопка редактирования.
Во-первых, нам нужно добавить кнопку редактирования под заметкой на экране одной заметки в show.view.php, удалив код кнопки удаления из файла. Эта кнопка переместит пользователя на экран редактирования.
Кнопка редактирования расположена в нижнем колонтитуле страницы отображения заметки. При нажатии он перенаправляет пользователя на экран редактирования, передавая идентификатор заметки в качестве параметра 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 с текущимuserID. Если авторизовано, отображается экран редактирования.
Файл edit.view.php содержит код для отображения тела заметки для редактирования с двумя кнопками: «Обновить» и «Отмена».
Кнопка «Обновить»: отправляет обновленную заметку на сервер и сохраняет ее в базе данных.
Кнопка «Отмена»: отменяет процесс редактирования и перенаправляет пользователя обратно на экран заметок.
= $errors['body'] ?>
В режиме редактирования заметки тело заметки отображается в текстовой области, что позволяет пользователю вносить изменения. Кнопка обновления отправляет обновленную заметку на сервер и сохраняет ее в базе данных.
Чтобы обновить заметку, нам нужно создать новый файл с именем 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.
Надеюсь, вы это ясно поняли.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3