پکیج‌های کاربردی لاراول ( ۱ )

در این مقاله پکیج‌های کاربردی 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 استفاده کردم که قالبهای کاملا ریسپانسیو و زیبایی را می‌توان با آن پیاده سازی کرد. شما می‌توانید از قسمت تمپلت‌های ایمیل بر اساس دسته بندی موردنظرتان قالب‌های زیبایی را پیدا کنید که با کلیک بر روی هر کدام می‌توانید دموی آن و کدهای آن را به صورت زیر مشاهده کنید.

MJML Email Template

گیت هاب MJML

برای نصب از این فریمورک باید از طریق NPM اقدام کنید و یا اینکه با استفاده از این پکیج لاراول ” Laravel MJML ” برای نصب آن اقدام نمائید.

و اما یک سورپرایز فوق العاده برای من این بود که یک ابزاری را پیاده سازی کردند که با دانلود و نصب آن به راحتی در یک محیط ویژوال تمپلت دلخواه را با این فریمورک پیاده سازی می‌کنید و در نهایت قالب آن را اکسپورت و در پروژه استفاده می‌کنید. برای دانلود آن از قسمت اپلیکیشن در داکیومنت MJML آن اقدام کنید.

MJML APP for mac

و در نهایت می‌توانید حتی تست ارسال و … را هم انجام دهید.

feature app 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
Comments