ایجاد Middleware در لاراول

امید کیانی 846 بازدید 1398/05/11
ایجاد Middleware در لاراول

در این آموزش ما یاد خواهیم گرفت که چگونه یک middleware را در لاراول ایجاد کنیم.

به طور ساده laravel middleware ها همه ی درخواست های http را فیلتر می کند.

برای مثال ما می خواهیم یک middleware ی با نام "CheckLang" که زبان ورودی را از درخواست Http چک می کند،ایجاد کنیم.

برای ایجاد یک middleware در لاراول از دستور زیر استفاده می کنیم.

php artisan make:middleware <middleware-name>

اکنون یک middleware با نام CheckLang ایجاد می کنیم.

php artisan make:middleware CheckLang

حالا به مسیر  app/http/kernel.php می رویم و middleware خود را register می کنیم.

app/Http/Kernel.php

<?php
 
 
namespace App\Http;
 
 
use Illuminate\Foundation\Http\Kernel as HttpKernel;
 
 
class Kernel extends HttpKernel
{
    ....
 
 
    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        ....
        'checkLang' => \App\Http\Middleware\CheckLang::class,
    ];
}

 

بعد از اینکه middleware خود را register کردیم به مسیر app/http/middleware رفته و منطق برنامه خود را در CheckLang.php ایجاد می کنیم.

app/Http/Middleware/CheckLang.php

<?php
 
namespace App\Http\Middleware;
 
use Closure;
 
class CheckLang
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->lang == 'en' || $request->lang == 'fa') {
            return $next($request);
        }
            return response()->json('Not Allow');
 
    }
}

 در این قسمت ما یک route ایجاد می کنیم و middleware مورد نظر را به آن اضافه می کنیم.

//routes/web.php 
 
 Route::middleware(['checkLang'])->group(function(){
 
 Route::get('validate', 'HomeController@validate');
 
 });

 متد validate را به HomeController اضافه می کنیم.

app/Http/Controllers/HomeController.php

<?php
 
 namespace App\Http\Controllers;
 
 use Illuminate\Http\Request;
 class HomeController extends Controller
 {
     public function validate()
     {
         dd('Allow');
     }
 }

 پروژه را با دستور زیر اجرا می کنیم.

php artisan serve

حالا  "lang=”en” or lang=”fa را در route تحت عنوان query string ارسال می کنیم.

اگر مقدار lang برابر fa یا en باشد، متد validate صدا زده شده و "Allow" نمایش داده می شود، در غیر این صورت middleware مورد نظر ما اجازه ی اجرا شدن متد validate را نداده و مقدار "Not Allow" نمایش داده می شود.

 

 

 

دیگر مقالات
حمید تیموری 1382 بازدید 1397/11/10
حمید تیموری 1234 بازدید 1397/08/01
حمید تیموری 2140 بازدید 1397/06/06
امید کیانی 1029 بازدید 1398/07/13
امید کیانی 770 بازدید 1398/07/16


نظرات (0)
هنوز نظری ثبت نشده است
برای ثبت نظر ابتدا وارد سایت شوید