


Apa yang salah dengan penambahan baru laravel dan ketidakupayaan untuk mengeditnya?
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>
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'); }
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>
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>
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'); }
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>
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'); }
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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

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

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.

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.

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.

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

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

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
