نوشتن ساده تر یک ویو ( Blade ) در لاراول

لاراول هر روز داره اپدیت میده و خودشو به روز نگه میداره ، ولی همچنان هم ی سری ضعف ها توی سیستم ویو هاش وجود داره ، اونم نبود بعضی Directive ها هستش که وجودشون میتونه کار مارو ساده تر کنه .همیشه از نوشتن کد های تکراری و استفاده از هلپر فانکشن های لاراول مثل route , url , asset و .. توی ویو های پروژه احساس خوبی نداشتم تا اینکه به ذهنم رسید که این هارو اضافه کنم به Engine Blade و خب این کار رو هم انجام دادم ولی خب تیلور جان عزیز موافق این کار نبود و گفت که فعلا نیازی نیس .. :((بخاطر همین مورد تصمیم گرفتم یه پکیج رو بنویسم که کار رو خیلی راحت تر میکنه برای نوشتن ویو ها توی لاراول .شما با پکیج EasyBlade دیگه نیاز نیس از ی سری کد های خام PHP وسط کدهاتون استفاده کنید و بعد از نصب این پکیج ی سری Directive باحال در اختیارتون قرار میگیره که میتونید ازش توی پروژه های خودتون استفاده کنید و از شر ی سری کدهای خام PHP وسط ویو خلاص شید.بیاید با هم ی چنتا از Directive های موجود توی این پکیج رو بررسی کنیم.اولین مورد دایرکتیو @route هستش ://Before : {{ route('home') }} //After : @route('home')که کار هلپر فانکشن route رو برامون انجام میده با این تفاوت که دیگه نیاز نیس هلپر فانکشن رو استفاده کنیم و مستقیما از دایرکتیو استفاده میکنیم.دومین مورد دایرکتیو @url هستش ://Before : {{ url('/') }} //After : @url('/')مورد بعدی @asset عه//Before : {{ asset('/img/header.png') }} //After : @asset('/img/header.png')خب تا اینجا چنتا دایرکتیو ساده رو داشتیم ، ی چنتا دیگه داریم که یکم خفن ترن از اینا :)))یکی از اون دایرکتیو های خفن ، دایرکتیو @isActive هستش، شما با این دایرکتیو میتونید چک کنید که آیا روت فعلی ای که داخلش هستیم برابر هست با روتی که بعنوان پارامتر به این دایرکتیو پاس دادیم ؟فرض کنید میخوایم اگه روت فعلی برابر با home یا dashboard بود بیاد و استرینگ active رو به کلس های یک المنت html اضافه کنه و اگر نبود استرینگ deactive رو چاپ کنه اونجا (آههه که چقد با این سر و کله میزدم و چقد سر هر پروژه براش کد PHP خام میزدم)خب بریم مورد بالارو پیاده کنیم با EasyBlade ، نترسید خیلی سخت نیس :@isActive(['home', 'dashboard'], 'active', 'deactive')آره فقط همین بود :) ، اگر پارامتر دوم خالی باشه خودکار active چاپ میشه و اگر پارامتر سوم هم خالی باشه و پاس داده نشه نال رو پرینت میکنه.تا حالا شده که شرط بزارید اگه تعداد این آرایه مساوی یا بیشتر از 1 بود مثلا بیاد ی کاریو انجام بده ؟خب دیگه ازین به بعد نمیخواد زیاد زحمت بدید به خودتون فقط کافیه از دایرکتیو @count و @endcount استفاده کنید، به این صورت :@count($users, 1) // Do Something ...@endcount // It will compile to : if(count($users) >= 1){ // Do Something ... }اصلا همه اینا به کنار این @user اش خیلی باحاله ، دیگه ی ساعت با auth سر و کله نزنید اگه ی مقدار از اطلاعات یوزر رو میخواید چاپ کنید فقط بنویسید :@user('name')خودش براتون مینویسه و خلاص ... ، نیاز نیس لاگین بودن کاربرو چک کنید خودش چک میکنه :)هنوز تموم نشده ، ما برای سشن ها هم ی سری دایرکتیو آماده کردیم:شما میتونید با @session مقدار یک سشن رو دریافت کنید، مثلا :@session('foo')برای مثال کد بالا میاد و چک میکنه که اگر سشن وجود داشته باشه مقدارش رو چاپ میکنه اگرم نه ازش میگذره.شما با دایرکتیو @sessionExists میتونید وجود یک سشن رو بررسی کنید و در صورت وجودش ی کاریو انجام بدید، مثلا :@sessionExists('foo') hello @endsessionExistsتوی کد بالا اگر سشن foo وجود داشته hello رو چاپ میکنه ، به همین خوشمزگی :)امیدوارم ازین مقاله و پکیج خوشتون اومده باشه و داخل پروژه هاتون ازش استفاده کنید و به نشانه حمایت توی گیتهاب به ما استار بدید و حتی روش کار کنید تا باهم پیشرفته ترش کنیم :)راستی اینم آدرس ریپازیتوری گیتهاب پکیج :https://github.com/rezaamini-ir/laravel-easybladeاگه دایرکتیو باحالی به ذهنت میاد که پیادش نکردیم بهمون اطلاع بده ، قول میدم اگه شدنی باشه اضافش میکنیم یا اصلا اگه خودتون توانایی و دانششو دارید بسم الله ، Pull request بزنید و مارم خوشحال کنید (البته تست هم یادتون نره براش بنویسیداااا )