Adakah mungkin untuk mengesahkan mendapatkan permintaan kad bebas menggunakan Illuminate\Foundation\Http\FormRequest dalam Laravel?
P粉087951442
P粉087951442 2024-03-27 17:23:42
0
1
451

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粉087951442
P粉087951442

membalas semua(1)
P粉706038741

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan