Penghalaan ialah fungsi yang sangat penting dan biasa digunakan apabila menggunakan rangka kerja Laravel. Ia boleh memautkan permintaan akses tapak web dengan mudah kepada pengawal dan kaedah yang sepadan.
Dalam sesetengah kes, kita perlu lulus beberapa parameter dalam laluan supaya pengawal dan kaedah boleh mendapatkan maklumat data yang sepadan. Walau bagaimanapun, kadangkala ralat dalam penghantaran parameter mungkin berlaku semasa penggunaan sebenar Di sini kita akan membincangkan penyelesaian kepada masalah ini.
Dalam Laravel, terdapat dua cara untuk lulus parameter laluan, satu adalah menggunakan parameter URL dan satu lagi adalah menggunakan parameter laluan. Di bawah ini kami akan memperkenalkan dua kaedah lulus parameter ini masing-masing.
1. Melepasi parameter URL
Melalui parameter URL adalah untuk menghantar maklumat data dengan menambahkan parameter selepas URL. Contohnya, jika kami perlu menghantar ID pengguna kepada kaedah pengawal, kami boleh menggunakan kaedah berikut:
Route::get('/user/{id}', 'UserController@show');
Dalam laluan ini, kami menggunakan {id}
sebagai pemegang tempat parameter, menunjukkan bahawa kami memerlukan untuk lulus parameter ID. Kemudian dalam kaedah show
dalam pengawal, kita boleh mendapatkan parameter seperti ini:
public function show($id) { // 获取到用户ID,然后进行相应的操作 }
Dengan cara ini, pengguna perlu menghantar parameter yang sepadan dalam URL apabila mengakses, contohnya, /user/1
akan Melepasi 1 sebagai parameter ke dalam kaedah show
.
Walau bagaimanapun, kadangkala anda mungkin menghadapi mesej ralat yang serupa dengan yang berikut:
Missing required parameters for [Route: user.show] [URI: user/{id}]. (View: ...)
Mesej ralat ini bermakna apabila menggunakan fungsi route()
untuk menjana URL, Parameter yang diperlukan menyebabkan Penjanaan URL gagal. Penyelesaiannya adalah untuk lulus parameter yang sepadan apabila menggunakan fungsi route()
untuk menjana URL:
<a href="{{ route('user.show', ['id' => $user->id]) }}">用户详情</a>
Dan jika kita perlu lulus berbilang parameter, kita boleh menambah berbilang pasangan nilai kunci dalam tatasusunan:
<a href="{{ route('user.edit', ['id' => $user->id, 'name' => $user->name]) }}">编辑用户信息</a>
2. Lulus parameter penghalaan
Perlaluan parameter penghalaan adalah untuk menghantar maklumat data dengan menetapkan parameter semasa menentukan laluan. Contohnya, jika kami perlu menghantar ID produk dan nama produk kepada kaedah pengawal untuk pertanyaan, kami boleh menggunakan kaedah berikut:
Route::get('/product/{id}/{name}', 'ProductController@show');
Dalam laluan ini, kami menggunakan {id}
dan {name}
sebagai pemegang tempat Parameter, menunjukkan bahawa parameter ID dan nama perlu diluluskan. Kemudian dalam kaedah show
dalam pengawal, kita boleh mendapatkan dua parameter ini seperti ini:
public function show($id, $name) { // 获取到商品ID和商品名称,然后进行相应的查询操作 }
Dengan cara ini, pengguna perlu menghantar parameter yang sepadan dalam URL semasa mengakses, seperti /product/1/Apple
akan melepasi 1 dan Apple sebagai parameter kepada kaedah show
.
Walau bagaimanapun, kadangkala anda mungkin menghadapi ralat semasa menghantar parameter. Sebagai contoh, apabila menggunakan kaedah berikut untuk menjana URL:
<a href="{{ action('ProductController@show', [$product->id]) }}">商品详情</a>
, mesej ralat berikut akan muncul:
Missing required parameters for [Route: ] [URI: product/{id}/{name}]. (View: ...)
Penyelesaian adalah untuk lulus parameter yang sepadan apabila menggunakan Fungsi action()
untuk menjana URL :
<a href="{{ action('ProductController@show', [$product->id, $product->name]) }}">商品详情</a>
Ringkasan
Melalui pengenalan di atas, kita dapat melihat bahawa cara untuk menggunakan parameter penghalaan Laravel adalah sangat mudah, tetapi anda akan menghadapi beberapa masalah kecil semasa penggunaan sebenar. Oleh itu, kita perlu memberi perhatian untuk menyemak sama ada kaedah lulus parameter dan parameter lulus adalah betul semasa menulis kod untuk mengelakkan ralat dan keabnormalan fungsi.
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika terdapat ralat semasa menghantar parameter dalam laluan laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!