آموزش middleware در لاراول 6 ، در یکی دیگر از قسمت های آموزش لاراول 6 ، شما می آموزید که چگونه یک middleware سفارشی ایجاد کنید و همچنین نحوه ی استفاده از آن را در پروژه های مبتنی بر لاراول را یاد خواهید گرفت.
در این آموزش middleware در لاراول ، ابتدا با مفهوم middleware آشنا می شوید سپس در قالب یک مثال ساده نحوه ایجاد middleware در لاراول را یاد خواهید گرفت و در ادامه با انواع middleware ، ثبت middleware در پروژه خود ، بررسی شرط بر روی middleware و … آشنا خواهید شد.با ما همراه باشید.
middleware لاراول به سادگی ، تمام درخواست های http به پروژه های مبتنی بر لاراول را فیلتر می کند. به عنوان مثال هنگامیکه کاربر هر درخواستی را انجام دهد ، middleware بررسی می کند که آیا کاربر وارد سیستم شده است یا خیر و بر این اساس ریدایرکت را انجام می دهد.هر کاربری که وارد سیستم نشده باشد و قصد داشته باشد به داشبورد یا بخش های دیگر پروژه دسترسی پیدا کند در این لحظه middleware درخواست ها را فیلتر می کند و کاربر را به بخش ورود یا (log in) هدایت یا ریدایرکت می کند.
در این مرحله ما باید یک middleware سفارشی در پروژه Laravel خود ایجاد کنیم.بنابراین خط فرمان خود را باز کنید و دستور زیر را اجرا کنید:
php artisan make:middleware AgeChecker
همچنین بخوانید: ساختار دایرکتوری فریمورک لاراول laravel
پس از اینکه با موفقیت middleware خود را ایجاد کردید به مسیر app/http/kernel.php بروید و middleware سفارشی که ایجاد کردید را ثبت کنید.
همانطور که در این فایل مشاهده می کنید ما سه نوع middleware داریم : Global Middleware ، Middleware Groups و Routed Middleware که در ادامه به صورت مختصر توضیح داده شده است.
Global Middleware : اگر می خواهید که middleware برروی هر درخواست HTTP برنامه شما، اجرا شود، کلاس middlreware را داخل پراپرتی middleware$ از کلاس app/Http/Kernel.php خود قرار دهید.
Middleware Groups : گاهی اوقات ممکن است بخواهید چندین middleware را با یک کلید واحد گروه بندی کنید تا آنها را آسان تر به مسیرها یا Route ها اختصاص دهید.شما می توانید با استفاده از پراپرتی $middlewareGroups در کلاس Kernel این کار را انجام دهید.
Routed Middleware : اگر بخواهید middleware را بر روی Route خاصی اعمال کنید، باید در فایل Kernel.php یک کلید برای ثبت middleware خود در تعیین کنید و در پراپرتی routeMiddleware$ آنرا لیست کنید.
<?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 = [
....
'ageChecker' => \App\Http\Middleware\AgeChecker::class,
];
}
همچنین بخوانید: آموزش مسیردهی Routing در لاراول 6
پس از اینکه middleware خود را در پروژه لاراول ثبت کردید به مسیر app/Http/Middleware/ AgeChecker.php بروید و منطق خود را در اینجا پیاده سازی کنید (بررسی شرط بر روی middleware):
<?php
namespace App\Http\Middleware;
use Closure;
class AgeChecker
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if($request->input('age') < 30)
{
return redirect('/');
}
return $next($request);
}
}
در این مرحله ، ما به سادگی یک Route ایجاد می کنیم و از middleware سفارشی در اینجا استفاده می کنیم.درخواست های http را فیلتر می کنیم و از Route ها محافظت می کنیم.
فایل routes/web.php را باز کنید و مانند زیر عمل کنید:
<?php
Route::get('/test', "MyController@submit")->middleware('ageChecker');
اکنون ما یک کنترلر با نام مناسب و متناسب با نیاز خود و پروژه ایجاد می کنیم که ما در اینجا یک کنترلر به صورت تست با نام MyController ایجاد کرده ایم ، و درون آن یک متد با نام submit ایجاد می کنیم و کد زیر را درون آن می نویسم :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class MyController extends Controller
{
public function submit()
{
echo "شما وارد کنترلر MyController شده اید!";
}
}
همچنین بخوانید: آموزش آپلود عکس در لاراول 6
اکنون برای تست این مثال کافیست مقدار age را در آدرس یکبار برابر با مقداری بیشتر 30 قرار دهید و بار دیگر برابر با مقداری کمتر از 30 و نتایج را مشاهده کنید:
ما یک بار مقدار age را برابر با 25 قرار دادیم که برنامه ما را به صفحه اول هدایت کرد و بار دیگر برابر با 50 قرار دادیم که در خروجی برنامه پیام ” شما وارد کنترلر MyController شده اید! “ برای ما چاپ شد.
http://127.0.0.1:8000/test?age=25
http://127.0.0.1:8000/test?age=50
خروجی : ” شما وارد کنترلر MyController شده اید! “
در آموزش middleware در لاراول 6، ما در قالب یک مثال موفق شدیم یک middleware سفارشی را در یک پروژه مبتنی بر لاراول ایجاد کنیم.
امیدوارم این آموزش برای شما مفید بوده باشد…