Rumah > Soal Jawab > teks badan
Saya mempunyai laluan GET dengan kad bebas Tarikh.
Kad bebas hari ialah rentetan seperti ini: 20220507 (YYYYMMDD).
Selepas mengesahkan rentetan saya mahukan respons yang betul. Sebelum menghantar respons saya ingin mengesahkan panjang dan format rentetan.
Soalan saya ialah, adakah mungkin untuk mengesahkan rentetan menggunakan IlluminateFoundationHttpFormRequest atau IlluminateHttpRequest Dibuat oleh: Request? Atau adakah mereka hanya menerima permintaan penerbitan?
Kod:
php artisan make:request CalendarDayRequest
Contoh mendapatkan laluan dalam web.php
Route::get('/calendar/{day}' , 'App\Http\Controllers\HomeController@calendar')->name('calendar');
Contoh Pengawal
use App\Http\Requests\CalendarDayRequest; public function calendar ( CalendarDayRequest $request ) { // Code }
atau pengawal sampel 2
use Illuminate\Http\Request; public function calendar ( Request $request ) { $validated = $request->validate([ 'day' => 'required', ]); }
Saya mendapat ralat: Gelung ubah hala tanpa had, terlalu banyak ubah hala.
P粉7060387412024-03-28 09:30:04
Pertama sekali, anda tidak boleh mengesahkan parameter laluan dalam permintaan borang
Walau bagaimanapun, anda boleh menggunakan ungkapan biasa untuk mengesahkan laluan anda Contoh:
Route::get('/calendar/{day}', 'App\Http\Controllers\HomeController@calendar')
->name('calendar')
->where('day', '/^[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])$/');
Jika anda masih mahu menggunakan validate()
fungsi atau permintaan borang
$request->merge([
'day' => $day
]);
$this->validate($request, [
'day' => 'date_format:Ymd',
]);
Kaedah permintaan borang - timpa all()
kaedah
public function all($k = null){ $data = parent::all($k); $data['day'] = $this->route('day'); return $data; }
Jika ia tidak berkesan, cuba kod berikut
public function calendar(Request $request, $day){ $data = $request->all(); $data['day'] = $day; $validator = Validator::make($data, [ 'day' => 'required|date_format:Ymd', ]); if($validator->fails()){ // Do Something abort(404); } }
Bagaimana untuk mengesahkan parameter laluan dalam Laravel 5?
Tetapi jika anda ingin menggunakan fungsi validate()
, saya syorkan anda menghantarnya sebagai parameter permintaan.