Est-il possible de vérifier l'obtention d'une demande générique en utilisant Illuminate\Foundation\Http\FormRequest dans Laravel ?
P粉087951442
P粉087951442 2024-03-27 17:23:42
0
1
419

J'ai un itinéraire GET avec un caractère générique Date.

Le caractère générique du jour est une chaîne comme celle-ci : 20220507 (AAAAMMJJ).

Après avoir validé la chaîne, je souhaite une réponse correcte. Avant d'envoyer la réponse, je souhaite vérifier la longueur et le format de la chaîne.

Ma question est la suivante : est-il possible de valider la chaîne en utilisant IlluminateFoundationHttpFormRequest ou IlluminateHttpRequest Fabriqué par : Demande ? Ou acceptent-ils uniquement les demandes de publication ?

Code :

php artisan make:request CalendarDayRequest

Exemple d'obtention d'itinéraires dans web.php

Route::get('/calendar/{day}' , 'App\Http\Controllers\HomeController@calendar')->name('calendar');

Contrôleur d'échantillon

use App\Http\Requests\CalendarDayRequest; 
public function calendar ( CalendarDayRequest $request ) {
    // Code
}

ou contrôleur d'échantillon 2

use Illuminate\Http\Request;

public function calendar ( Request $request ) {
    $validated = $request->validate([
        'day' => 'required',
     ]);
}

J'obtiens l'erreur : Boucle de redirection infinie, trop de redirections.

P粉087951442
P粉087951442

répondre à tous(1)
P粉706038741

Tout d'abord, vous ne pouvez pas valider les paramètres d'itinéraire dans les demandes de formulaire

Vous pouvez cependant utiliser des expressions régulières pour valider vos itinéraires Exemple :

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])$/');

Si vous souhaitez toujours utiliser la validate()demande de fonction ou de formulaire

$request->merge([
   'day' => $day
]);

$this->validate($request, [
   'day' => 'date_format:Ymd',
]);

Méthode de demande de formulaire - remplacement de la all() méthode

public function all($k = null){
   $data = parent::all($k);
   $data['day'] = $this->route('day');
   return $data;
}

Si cela ne fonctionne pas, essayez le code suivant

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);
 }

}

Comment vérifier les paramètres d'itinéraire dans Laravel 5 ?

Mais si vous souhaitez utiliser la fonction validate(), je vous recommande de l'envoyer en paramètre de requête.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!