Rumah > pembangunan bahagian belakang > tutorial php > Mengedit dan Mengemas kini Nota menggunakan Kaedah Permintaan PATCH

Mengedit dan Mengemas kini Nota menggunakan Kaedah Permintaan PATCH

WBOY
Lepaskan: 2024-07-17 12:25:51
asal
445 orang telah melayarinya

Editing and Updating Notes using PATCH Request Method

Sebagai susulan untuk mencipta nota baharu menggunakan borang dan kaedah permintaan, kami kini akan meneroka cara mengedit dan mengemas kini nota sedia ada dalam pangkalan data menggunakan kaedah permintaan PATCH.

Apabila pengguna ingin mengedit nota, kami perlu menyediakan cara untuk mereka mengakses skrin edit. Di sinilah butang edit masuk.

Menambah Butang Edit

Pertama, kita perlu menambah butang edit di bawah nota pada skrin nota tunggal dalam show.view.php dengan mengalih keluar kod butang padam daripada fail. Butang ini akan mengalihkan pengguna ke skrin edit.

<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>
Salin selepas log masuk

Butang edit diletakkan di bahagian pengaki halaman paparan nota. Apabila diklik, ia mengubah hala pengguna ke skrin edit, menghantar ID nota sebagai parameter dalam URL.

Mengedit Nota

Fail edit.php mengawal proses penyuntingan. Ia mendapatkan semula nota daripada pangkalan data dan memberi kuasa kepada pengguna untuk mengedit nota. Jika pengguna diberi kuasa, skrin edit dipaparkan, membenarkan pengguna membuat perubahan pada nota.

<?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
]);
Salin selepas log masuk

Fail edit.php menggunakan kelas Pangkalan Data untuk mendapatkan semula nota daripada pangkalan data. Ia kemudian menyemak sama ada pengguna dibenarkan untuk mengedit nota dengan membandingkan user_id dengan currentuserID. Jika dibenarkan, skrin edit dipaparkan.

Edit Paparan Nota

Fail edit.view.php mengandungi kod untuk memaparkan badan nota untuk mengedit, dengan dua butang: Kemas Kini dan Batal.

  • Butang kemas kini: menyerahkan nota yang dikemas kini ke pelayan dan menyimpannya dalam pangkalan data

  • Butang Batal: membatalkan proses pengeditan dan mengubah hala pengguna kembali ke skrin nota.

<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>
Salin selepas log masuk

Paparan edit nota memaparkan badan nota dalam kawasan teks, membolehkan pengguna membuat perubahan. Butang kemas kini menyerahkan nota yang dikemas kini ke pelayan dan menyimpannya dalam pangkalan data.

Mengemas kini Nota

Untuk mengemas kini nota, kami perlu mencipta fail baharu bernama update.php yang menyemak pengesahan nota dan juga menyemak kebenaran pengguna. Fail ini hanya akan membenarkan pengguna yang dibenarkan untuk melihat dan mengedit nota yang sudah ada dalam pangkalan data.

<?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();
Salin selepas log masuk

Menambah Laluan

Untuk membolehkan pengeditan dan pengemaskinian nota, kami perlu menambah laluan berikut dalam route.php:

$router->get('/note/edit', 'controllers/notes/edit.php');
$router->patch('/note', 'controllers/notes/update.php');
Salin selepas log masuk

Laluan ini akan membolehkan pengeditan dan pengemaskinian nota menggunakan kaedah permintaan PATCH.

Bagaimana ia Berfungsi

Apabila pengguna ingin mengedit nota, pengguna akan dibawa ke skrin edit di mana pengguna boleh membuat perubahan pada nota. Apabila pengguna menyerahkan perubahan, fail update.php akan dipanggil. Fail ini akan menyemak sama ada pengguna dibenarkan untuk mengedit nota dan jika pengesahan nota adalah betul. Jika kedua-dua cek lulus, nota akan dikemas kini dalam pangkalan data dan pengguna akan dialihkan semula ke skrin nota. Jika salah satu semakan gagal, pengguna akan diubah hala semula ke skrin edit dengan mesej ralat.

Dengan mengikut langkah ini, pengguna boleh mengedit dan mengemas kini nota dengan mudah menggunakan kaedah permintaan PATCH.

Saya harap anda telah memahaminya dengan jelas.

Atas ialah kandungan terperinci Mengedit dan Mengemas kini Nota menggunakan Kaedah Permintaan PATCH. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan