لاراول هر روز داره اپدیت میده و خودشو به روز نگه میداره ، ولی همچنان هم ی سری ضعف ها توی سیستم ویو هاش وجود داره ، اونم نبود بعضی 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 بزنید و مارم خوشحال کنید (البته تست هم یادتون نره براش بنویسیداااا )