Rumah rangka kerja php Laravel Apa yang salah dengan penambahan baru laravel dan ketidakupayaan untuk mengeditnya?

Apa yang salah dengan penambahan baru laravel dan ketidakupayaan untuk mengeditnya?

Apr 23, 2023 am 10:06 AM

Baru-baru ini, semasa membangunkan projek menggunakan rangka kerja Laravel, saya menemui masalah: data yang baru ditambah tidak boleh diedit. Selepas penyelesaian masalah dan analisis lanjut, saya menemui masalah itu dan menyelesaikannya. Izinkan saya berkongsi beberapa idea penyelesaian di bawah.

Pertama sekali, kita perlu menjelaskan konsep - kaedah permintaan HTTP. Kaedah permintaan HTTP merujuk kepada kaedah yang digunakan oleh klien apabila meminta sumber daripada pelayan, termasuk GET, POST, PUT, DELETE, dsb. Antaranya, kaedah GET digunakan untuk mendapatkan sumber, kaedah POST digunakan untuk mencipta sumber, kaedah PUT digunakan untuk mengemaskini sumber, dan kaedah DELETE digunakan untuk memadam sumber.

Dalam Laravel, apabila menggunakan penyerahan borang, kaedah permintaan lalai ialah POST, contohnya:

<form action="/user" method="POST">
    <input type="text" name="name">
    <button type="submit">提交</button>
</form>
Salin selepas log masuk

Kemudian, kami menggunakan kaedah store dalam pengawal untuk mengendalikan permintaan ini:

public function store(Request $request)
{
    $user = new User;
    $user->name = $request->input('name');
    $user->save();
    return redirect('/user');
}
Salin selepas log masuk

Dalam kod di atas, kami mencipta objek Pengguna baharu, tetapkan medan nama yang diserahkan oleh borang kepada atribut nama objek Pengguna, kemudian simpan data dan ubah hala ke halaman /user .

Walau bagaimanapun, kod di atas kadangkala menghadapi masalah: data yang baru ditambah tidak boleh diedit. Apabila kami mengakses halaman edit, kami akan mendapati bahawa tiada maklumat data asal yang dibuat dalam halaman tersebut. kenapa ni? Mula-mula kita boleh melihat kod halaman edit:

<form action="/user/{{ $user->id }}" method="POST">
    {{ method_field('PUT') }}
    <input type="text" name="name" value="{{ $user->name }}">
    <button type="submit">提交</button>
</form>
Salin selepas log masuk

Dalam kod ini, kami menggunakan kaedah method_field untuk menentukan kaedah permintaan sebagai PUT, kerana dalam protokol HTTP, pengemaskinian sumber memerlukan kaedah PUT. Walau bagaimanapun, dalam rangka kerja Laravel, permintaan POST lalai tidak dapat mengenali permintaan PUT Oleh itu, apabila mengakses halaman edit, Laravel akan memprosesnya mengikut permintaan POST lalai dan bukannya permintaan PUT yang kami jangkakan.

Terdapat dua idea untuk menyelesaikan masalah ini: satu ialah menggunakan kaedah permintaan PUT untuk mencipta data; satu lagi ialah menggunakan parameter _method untuk menentukan kaedah permintaan apabila menggunakan kaedah POST untuk mencipta data .

Penyelesaian pertama ialah kaedah yang lebih mudah, tetapi ia memerlukan lebih banyak perubahan kod. Kita perlu menggunakan kaedah permintaan PUT dalam bentuk:

<form action="/user/{{ $user->id }}" method="POST">
    {{ method_field('PUT') }}
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <input type="text" name="name" value="{{ $user->name }}">
    <button type="submit">提交</button>
</form>
Salin selepas log masuk

Kemudian, kendalikan permintaan PUT dalam pengawal:

public function update(Request $request, $id)
{
    $user = User::findOrFail($id);
    $user->name = $request->input('name');
    $user->save();
    return redirect('/user');
}
Salin selepas log masuk
Salin selepas log masuk

Menggunakan kaedah ini, kita perlu menentukan kaedah dalam bentuk kaedah PUT, dan perlu lulus parameter _token untuk mengelakkan serangan CSRF, yang akan meningkatkan banyak beban kerja kod.

Penyelesaian kedua adalah lebih mudah. Kita perlu menggunakan kaedah POST dalam borang, tetapi tambahkan parameter _method apabila menyerahkan untuk menentukan kaedah permintaan sebagai PUT:

<form action="/user/{{ $user->id }}" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <input type="text" name="name" value="{{ $user->name }}">
    <button type="submit">提交</button>
</form>
Salin selepas log masuk

Kemudian, apabila memproses permintaan POST dalam pengawal, gunakan method kaedah untuk Mengenal pasti permintaan PUT:

public function update(Request $request, $id)
{
    $user = User::findOrFail($id);
    $user->name = $request->input('name');
    $user->save();
    return redirect('/user');
}
Salin selepas log masuk
Salin selepas log masuk

Menggunakan kaedah ini, kita hanya perlu menambah parameter _method pada borang, yang lebih mudah dibaca dan memerlukan usaha pengekodan yang kurang.

Dalam proses membangunkan projek Laravel, tidak dapat dielakkan untuk menghadapi masalah Menyelesaikan masalah memerlukan kesabaran dan keprihatinan kita, serta pemahaman yang mendalam dan penguasaan rangka kerja dan teknologi. Saya harap artikel ini dapat memberi sedikit rujukan dan bantuan kepada pembaca.

Atas ialah kandungan terperinci Apa yang salah dengan penambahan baru laravel dan ketidakupayaan untuk mengeditnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana membina API RESTful dengan ciri -ciri canggih di Laravel? Bagaimana membina API RESTful dengan ciri -ciri canggih di Laravel? Mar 11, 2025 pm 04:13 PM

Artikel ini membimbing membina API Restful Laravel yang mantap. Ia meliputi persediaan projek, pengurusan sumber, interaksi pangkalan data, siri, pengesahan, kebenaran, ujian, dan amalan terbaik keselamatan penting. Menangani Chall Scalability

Bagaimana untuk melaksanakan pengesahan dan kebenaran OAuth2 di Laravel? Bagaimana untuk melaksanakan pengesahan dan kebenaran OAuth2 di Laravel? Mar 12, 2025 pm 05:56 PM

Butiran artikel ini melaksanakan pengesahan dan kebenaran OAuth 2.0 di Laravel. Ia meliputi menggunakan pakej seperti penyelesaian liga/oauth2-server atau penyedia khusus, menekankan persediaan pangkalan data, pendaftaran klien, konfigurasi pelayan kebenaran

Bagaimana saya menggunakan komponen Laravel untuk mencipta elemen UI yang boleh diguna semula? Bagaimana saya menggunakan komponen Laravel untuk mencipta elemen UI yang boleh diguna semula? Mar 17, 2025 pm 02:47 PM

Artikel ini membincangkan membuat dan menyesuaikan elemen UI yang boleh diguna semula di Laravel menggunakan komponen, menawarkan amalan terbaik untuk organisasi dan mencadangkan peningkatan pakej.

Bagaimanakah saya boleh membuat dan menggunakan peraturan pengesahan tersuai di Laravel? Bagaimanakah saya boleh membuat dan menggunakan peraturan pengesahan tersuai di Laravel? Mar 17, 2025 pm 02:38 PM

Artikel ini membincangkan membuat dan menggunakan peraturan pengesahan tersuai di Laravel, menawarkan langkah -langkah untuk menentukan dan melaksanakannya. Ia menyoroti faedah seperti kebolehgunaan semula dan kekhususan, dan menyediakan kaedah untuk memperluaskan sistem pengesahan Laravel.

Apakah amalan terbaik untuk menggunakan Laravel dalam persekitaran awan asli? Apakah amalan terbaik untuk menggunakan Laravel dalam persekitaran awan asli? Mar 14, 2025 pm 01:44 PM

Artikel ini membincangkan amalan terbaik untuk menggunakan Laravel dalam persekitaran awan-asli, yang memberi tumpuan kepada skalabiliti, kebolehpercayaan, dan keselamatan. Isu -isu utama termasuk kontena, mikroservis, reka bentuk tanpa kewarganegaraan, dan strategi pengoptimuman.

Laravel vs Symfony: Mana yang sesuai untuk aplikasi web anda? Laravel vs Symfony: Mana yang sesuai untuk aplikasi web anda? Mar 10, 2025 pm 01:34 PM

Ketika datang untuk memilih kerangka PHP, Laravel dan Symfony adalah antara pilihan yang paling popular dan digunakan secara meluas. Setiap kerangka membawa falsafah, ciri, dan kekuatannya sendiri ke meja, menjadikannya sesuai untuk projek yang berbeza dan menggunakan kes -kes

Bagaimana saya membuat dan menggunakan arahan pisau tersuai di laravel? Bagaimana saya membuat dan menggunakan arahan pisau tersuai di laravel? Mar 17, 2025 pm 02:50 PM

Artikel ini membincangkan membuat dan menggunakan arahan pisau tersuai di Laravel untuk meningkatkan templat. Ia meliputi arahan yang menentukan, menggunakannya dalam templat, dan menguruskannya dalam projek besar, menonjolkan manfaat seperti kebolehgunaan semula kod yang lebih baik dan r yang lebih baik dan r

Bagaimana saya menggunakan konsol artisan Laravel untuk mengautomasikan tugas biasa? Bagaimana saya menggunakan konsol artisan Laravel untuk mengautomasikan tugas biasa? Mar 17, 2025 pm 02:39 PM

Konsol Artisan Laravel mengautomasikan tugas -tugas seperti menghasilkan kod, menjalankan migrasi, dan penjadualan. Perintah utama termasuk membuat: pengawal, berhijrah, dan db: benih. Perintah tersuai boleh dibuat untuk keperluan khusus, meningkatkan kecekapan aliran kerja.Character

See all articles