در این مقاله پکیجهای کاربردی laravel را که تجربه استفاده از آنها را دارم معرفی میکنم. این پکیجها میتوانند بسته به پروژه ای که انجام میدهید و حجم و ساختار پروژه مورد استفاده قرار بگیرند.
۱- لاراتراست (Laratrust)
در لاراول برای بخش کاربران و در واقع برای مدیریت و اعتبارسنجی کاربران اگر پروژه ای که انجام میدهید در سطح بزرگی نیست میتوانید از سیستم Auth خود لاراول که به صورت پیشفرض دارد استفاده کنید. ولی اگر اعتبارسنجی کاربران در پروژه شما مهم است توصیه میکنم برای اینکار از پکیجی مناسب استفاده کنید.
در این بین پکیجهای مختلفی هستند به نامهای Laravel ACL و laratrust اشاره کرد که من با لاراتراست و Spatie تجربه کار را دارم.
مراحل نصب پکیج لاراتراست :
بعد از اینکه وارد مسیر پروژه شدیم با استفاده از composer آن را نصب میکنیم.
composer require "santigarcor/laratrust:5.0.*"
در صورتیکه از نسخههای پایین تر از ۵.۵ لاراول استفاده میکنید این لینک را مطالعه کنید و مطابق آن پیش برید. در غیر اینصورت ادامه مراحل را با هم انجام میدهیم:
php artisan vendor:publish --tag="laratrust"
در صورتیکه بعد از این کامند فایلها پابلیش نشدند کد زیر را اجرا کنید:
php artisan config:clear
بعد از این دو مرحله پکیج لاراتراست نصب شده است.
قابلیت گروهبندی کاربران در لاراتراست:
در این پکیج این قابلیت با نام Team پیاده سازی شده است، اگر شما میخواهید گروههای کاربری داشته باشید و کاربران را گروههای مختلف تفکیک کنید باید این قابلیت را که به صورت پیشفرض غیرفعال است را فعال کنید برای اینکار به فایل config/laratrust.php را بازکنید و مقدار use_teams را به true تغییر دهید.
در این فایل کانفیگ مسیر مدل User به صورت زیر مشخص شده است :
'user_models' => [
'users' => 'App\User',
],
حالا شما میتوانید از طریق این لینک کانفیگ بخشهای مختلف را انجام دهید و یا طبق پیشنهاد لاراتراست کامند زیر را برای تنظیمات پیشفرض لاراتراست اجرا کنید.
php artisan laratrust:setup
بعد از اجرای این کامند migrationها جنریت میشوند و مدلهای Role, Permission و اگر قابلیت تیم را فعال کرده باشید مدل Team ساخته میشوند.
درنهایت حتما باید کامند زیر را اجرا کنیم :
composer dump-autoload
حالا migration های لاراتراست را با کامند زیر باید بسازیم و در نهایت migrate کنیم:
php artisan laratrust:migration
php artisan migrate
نکته : فایل config/laratrust.php را اگر باز کنید متوجه میشوید که مسیر مدلها، نام جداول، کلیدهای خارجی و سایر موارد کاملا مشخص شده است. در مدل User حتما trait لاراتراست باید use شود تا بتوان از قابلیتهای آن استفاده کرد. در واقع مدل User به صورت زیر خواهد بود :
<?php
use Laratrust\Traits\LaratrustUserTrait;
class User extends Model
{
use LaratrustUserTrait; // add this trait to your user model
....
}
که با توجه به کد فوق مدل User برای من به صورت زیر بود :
<?php
namespace ..... ;
use Illuminate\Auth\Middleware\Authenticate;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laratrust\Traits\LaratrustUserTrait;
class User extends Authenticatable
{
use LaratrustUserTrait;
...
}
برای استفاده از آن این لینک (Usage) را مطالعه کنید.
مثلا برای چک کردن اینکه اگر کاربر دسترسی و یا نقشی را داشت که به صفحه یا بخش مورد نظر اجازه دسترسی داشته باشد از کد زیر میتوانیم استفاده کنیم :
@if(Auth::user()->hasPermission('this.section'))
// display section
@endif
توضیح کد فوق : اگر کاربر permission را داشت و یا اینکه نقشی را داشت که آن نقش آن permission را داشت بخش مورد نظر نمایش داده شود.
در این بخش سعی کردم به صورت کلی پیاده سازی و تنظیمات پکیج را توضیح دهم ولی تاکید میکنم که حتما داکیومنت لاراتراست را مطالعه کنید تا با قابلیت های فوق العاده آن بیشتر آشنا شوید.
نکته: برای بحث مدیریت کاربران پکیجهای مختلفی وجود دارند ولی مهم این است که بتوانیم درست از انها استفاده کنیم و قبل از استفاده داکیومنت آن را مطالعه کنیم که به نحو درست از آن استفاده کنیم. پکیج قدرتمند دیگری که میتونم بهتون معرفی کنم spatie laravel permission است که از کار کردن باهاش لذت بردم که توصیه میکنم قبل از استفاده این دو مقاله را مطالعه کنید که بعد از آن بدونید که با کدوم پکیج کارتون رو شروع کنید :
Two Best Laravel Packages to Manage Roles/Permissions
User Roles and Permissions (ACL) using Spatie Tutorial
۲ – پکیج ماژولار نمودن ساختار لاراول ( nwidart )
این پکیج جزو محبوبترین پکیجها برای خودم است وقتی توسعه یک پروژه که با لاراول است را شروع میکنم احتمال ۹۵ درصد از این پکیج استفاده میکنم.
وقتی پروژه ای را توسعه میدهیم لازم است ساختار درستی را برای آن در نظر بگیریم تا وقتی فردی به تیم توسعه اضافه شد به راحتی بتواند بخشهای مختلف آن را درک کند و بهبود و توسعه کد راحتتر باشد به قول یکی از مدیران پروژه بخش زیادی از هزینه هر شرکت صرف بهبود و بازنویسی بهتر کدهای نرم افزار میشود. پس لازم است همه افراد تیم توسعه این ساختار را رعایت کنند.
با استفاده از این پکیج میتوانیم ماژولاریتی پروژه را در حد بسیار بالایی انجام دهیم یعنی تمام بخشهای پروژه لاراولی خود را که شامل blade, Controller, Route, Model, migration, seeder و … را تفکیک کنیم به طوریکه اگر این ماژول بعدها حذف شد یا در پروژه ای استفاده شد به راحتی امکان پذیر باشد.
یک مثال ساده از ساختاری که برای هر ماژول ایجاد میشود به صورت زیر است :
نصب پکیج nwidart :
برای نصب، دستور زیر را وارد میکنیم تا از composer برای نصب آن استفاده کنیم.
composer require nwidart/laravel-modules
بعد از نصب دستور زیر را وارد کنید:
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
در نهایت باید فایل composerلاراول را به صورت زیر آپدیت کنیم:
{
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "Modules/"
}
}
}
نصب انجام شد و در پایان دستور composer dump-autoload را اجرا کنید.
در صفحه داکیومنتیشن پکیج میتوانید کامندهایی ( Artisan commands ) که با استفاده از آنها میتوان کارهای مختلف را انجام داد مشاهده کنید.
۳ – Laravel Collective
از این پکیج برای بهبود و راحتی کار با فرمها استفاده میشود با استفاده از این پکیج نیاز نیست که تگهای html برای input ها بنویسید و … با استفاده از ساختار آن خودش تگ ها را جنریت میکند. برای مثال وقتی که میخواهیم یک input از نوع تکست توی فرم تعریف کنیم به صورت زیر مینویسیم :
{!! Form::text('name', 'Default Value'); !!}
برای مثال سایر تگها را به صورت زیر میتوان جنریت کرد:
echo Form::email($name, $value = null, $attributes = []);
echo Form::file($name, $attributes = []);
نصب پکیج Laravel Collective:
برای نصب این پکیج کافیه کد زیر را در مسیر پروژه اجرا کنیم: ( وقتی وارد صفحه داکیومنت پروژه شوید نسخههای مختلف آن را میبینید نسخه ۵.۴ آن برای لاراول ۵.۶ استفاده شده و ایرادی ندارد. )
composer require "laravelcollective/html":"^5.4.0"
بعد از نصب کد زیر را به لیست providersها در فایل config/app.php اضافه کنید.
Collective\Html\HtmlServiceProvider::class,
و کد زیر را در همین فایل config/app.php به aliases اضافه کنید.
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
در نهایت توصیه میکنم داکیومنت پکیج Laravel Collective را مطالعه کنید تا با نحوه استفاده آن در blade آشنا شوید.
قالبهای ایمیل لاراول :
این مورد هرچند پکیج نیست ولی از موارد مهم و جدایی ناپذیر یک پروژه است که قالبهای ایمیلی که استفاده میکنیم برای تایید کاربر، فراموشی رمز عبور و … از ساختار زیبایی برخوردار باشند.
شما میتوانید از Beautymail و یا از MJML استفاده کنید.
من خودم شخصا از MJML استفاده کردم که قالبهای کاملا ریسپانسیو و زیبایی را میتوان با آن پیاده سازی کرد. شما میتوانید از قسمت تمپلتهای ایمیل بر اساس دسته بندی موردنظرتان قالبهای زیبایی را پیدا کنید که با کلیک بر روی هر کدام میتوانید دموی آن و کدهای آن را به صورت زیر مشاهده کنید.
برای نصب از این فریمورک باید از طریق NPM اقدام کنید و یا اینکه با استفاده از این پکیج لاراول ” Laravel MJML ” برای نصب آن اقدام نمائید.
و اما یک سورپرایز فوق العاده برای من این بود که یک ابزاری را پیاده سازی کردند که با دانلود و نصب آن به راحتی در یک محیط ویژوال تمپلت دلخواه را با این فریمورک پیاده سازی میکنید و در نهایت قالب آن را اکسپورت و در پروژه استفاده میکنید. برای دانلود آن از قسمت اپلیکیشن در داکیومنت MJML آن اقدام کنید.
و در نهایت میتوانید حتی تست ارسال و … را هم انجام دهید.
نصب ردیس Redis
برای نصب ردیس بر روی مک با استفاده از Brew به صورت زیر اقدام میکنیم.
brew update
brew install redis
بعد از نصب آن دستورات زیر در دسترس هستند.
// to start it:
brew services start redis
// to stop it, just run:
brew services stop redis
// Test if Redis server is running.
redis-cli ping
// Launch Redis on computer starts.
ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
// Start Redis server using configuration file.
redis-server /usr/local/etc/redis.conf
// Start Redis server via “launchctl”.
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
// Location of Redis configuration file.
/usr/local/etc/redis.conf
// Get Redis package information
brew info redis
// Uninstall Redis and its files.
brew uninstall redis
rm ~/Library/LaunchAgents/homebrew.mxcl.redis.plist