Maison > développement back-end > tutoriel php > Modification et mise à jour de notes à l'aide de la méthode de requête PATCH

Modification et mise à jour de notes à l'aide de la méthode de requête PATCH

WBOY
Libérer: 2024-07-17 12:25:51
original
405 Les gens l'ont consulté

Editing and Updating Notes using PATCH Request Method

En guise de suivi de la création de nouvelles notes à l'aide de formulaires et de méthodes de requête, nous allons maintenant explorer comment modifier et mettre à jour les notes existantes dans la base de données à l'aide de la méthode de requête PATCH.

Lorsqu'un utilisateur souhaite modifier une note, nous devons lui fournir un moyen d'accéder à l'écran de modification. C'est là qu'intervient le bouton Modifier.

Ajout d'un bouton Modifier

Tout d'abord, nous devons ajouter un bouton d'édition sous la note sur l'écran de note unique dans show.view.php en supprimant le code du bouton de suppression du fichier. Ce bouton déplacera l'utilisateur vers l'écran d'édition.

<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>
Copier après la connexion

Le bouton Modifier est placé dans la section pied de page de la page d'affichage des notes. Lorsqu'on clique dessus, il redirige l'utilisateur vers l'écran d'édition, en passant l'ID de la note comme paramètre dans l'URL.

Modification des notes

Le fichier edit.php contrôle le processus d'édition. Il récupère la note de la base de données et autorise l'utilisateur à modifier la note. Si l'utilisateur est autorisé, l'écran d'édition s'affiche, permettant à l'utilisateur d'apporter des modifications à la note.

<?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
]);
Copier après la connexion

Le fichier edit.php utilise la classe Database pour récupérer la note de la base de données. Il vérifie ensuite si l'utilisateur est autorisé à modifier la note en comparant le user_id avec le currentuserID. Si autorisé, l'écran de modification s'affiche.

Modifier la vue des notes

Le fichier edit.view.php contient le code pour afficher le corps de la note pour l'éditer, avec deux boutons : Mettre à jour et Annuler.

  • Bouton Mettre à jour : soumet la note mise à jour au serveur et la stocke dans la base de données

  • Bouton Annuler : annule le processus d'édition et redirige l'utilisateur vers l'écran des notes.

<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>
Copier après la connexion

La vue Modifier la note affiche le corps de la note dans une zone de texte, permettant à l'utilisateur d'apporter des modifications. Le bouton de mise à jour soumet la note mise à jour au serveur et la stocke dans la base de données.

Mise à jour des notes

Pour mettre à jour une note, nous devons créer un nouveau fichier nommé update.php qui vérifie la validation de la note et vérifie également l'autorisation de l'utilisateur. Ce fichier permettra uniquement aux utilisateurs autorisés de visualiser et de modifier les notes déjà présentes dans la base de données.

<?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();
Copier après la connexion

Ajout d'itinéraires

Pour permettre l'édition et la mise à jour des notes, nous devons ajouter les itinéraires suivants dans route.php :

$router->get('/note/edit', 'controllers/notes/edit.php');
$router->patch('/note', 'controllers/notes/update.php');
Copier après la connexion

Ces itinéraires permettront l'édition et la mise à jour des notes à l'aide de la méthode de requête PATCH.

Comment ça marche

Lorsqu'un utilisateur souhaite modifier une note, il sera redirigé vers l'écran d'édition où l'utilisateur pourra apporter des modifications à la note. Lorsqu'un utilisateur soumet des modifications, le fichier update.php sera appelé. Ce fichier vérifiera si l'utilisateur est autorisé à modifier la note et si la validation de la note est correcte. Si les deux vérifications réussissent, la note sera mise à jour dans la base de données et l'utilisateur sera redirigé vers l'écran des notes. Si l'une ou l'autre des vérifications échoue, l'utilisateur sera redirigé vers l'écran d'édition avec des messages d'erreur.

En suivant ces étapes, un utilisateur peut facilement modifier et mettre à jour la note à l'aide de la méthode de requête PATCH.

J'espère que vous l'avez bien compris.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal