Maison > Questions et réponses > le corps du texte
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粉7060387412024-03-28 09:30:04
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.