2017-10-14 7 views
1

Je vais avoir un groupe d'itinéraire qui ressemble suit:Exigent demande ajax pour le groupe d'itinéraire

web.php

Route::group(['middleware' => 'auth', 'prefix' => 'ajax'], 
    function() { 
     Route::post('checkTheName', function(Request $request) { 
      return response()->json('Something important'); 
     }); 
    } 
); 

Est-ce possible avec Laravel pour vérifier si la demande entrante est une requête AJAX pour toutes les voies de un groupe (et si non, jeter par exemple un statut 404)? Je trouve qu'il est inutile de le vérifier à l'intérieur de chaque poste d'enfant. C'est pourquoi je voudrais faire une vérification globale si la requête est dans la portée du groupe de routage.

En utilisant Laravel 5.5

Répondre

2

Vous pouvez le faire en utilisant le middleware et d'utiliser cette option pour vérifier si la requête est une requête Ajax ou non. Vous pouvez créer un nouveau middleware avec php artisan make:middleware AjaxMiddleware.

l'intérieur de la fonction poignée vous pourriez regarder faire quelque chose comme ceci:

public function handle($request, Closure $next) 
{ 
    abort_unless($request->ajax(), 404); 
} 

Cela profite de l'aide abort_unless() qui prend une instruction conditionnelle comme premier paramètre, puis le code d'état pour revenir dans la deuxième . Vous pouvez également choisir de faire abort_unless($request->ajax(), 401) qui serait une demande non autorisée.

Il vous suffit ensuite d'enregistrer le middleware dans votre fichier Kernel.php et de l'appliquer dans votre groupe de routage ou sur votre constructeur de contrôleur.

+0

Neat. Merci beaucoup James. Malheureusement, je ne peux pas faire de promotion en raison de la barrière de 15 réputation. – Kesse

+0

Voilà, vous allez ;-) – Kesse