cari

Rumah  >  Soal Jawab  >  teks badan

Adakah mungkin untuk mengesahkan mendapatkan permintaan kad bebas menggunakan Illuminate\Foundation\Http\FormRequest dalam Laravel?

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粉087951442P粉087951442275 hari yang lalu483

membalas semua(1)saya akan balas

  • P粉706038741

    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.

    balas
    0
  • Batalbalas