sina khaghani
sina khaghani
خواندن ۱ دقیقه·۴ سال پیش

معرفی پکیج Excludable در لاراول

Laravel Excludable
Laravel Excludable

در برخی از پروژه‌ها شما می‌خواهید که مثلا تعدادی از محصولات یا مقالات سایت شما توسط کاربران عادی قابل رویت یا حتی جستجو نباشد و فقط تعداد خاصی از اعضا (مثلا فقط ادمین‌ها) بتوانند آنها را ببینند. خب برای پیاده سازی این امکان شما باید کلی کد بزنید و حتی تغییراتی در ساختار جداول دیتابیس ایجاد کنید تا بتوانید چنین فیچری را به سایت خودتان اضافه کنید.

اما حالا توسعه دهندگان لاراول با ارائه‌ی یک پکیج خوب به نام Excludable این امکان را برای شما به راحتی فراهم کردند. در این مقاله سعی میکنم کار با این پکیج را که خیلی هم راحت است، به شما آموزش دهم.



آموزش کار با پکیج Laravel Excludable

https://github.com/h-farm/laravel-excludable

ابتدا با کامپوزر پکیج را نصب می‌کنید.

composer require h-farm/laravel-excludable

سپس فایل مایگریشن آنرا ایجاد و با دستور ماگریشن جدول مورد نیاز آن را می‌سازیم.

php artisan vendor:publish --provider=&quotHFarm\Excludable\ExcludableServiceProvider&quot --tag=&quotexcludable-migrations&quot
php artisan migrate

با دستور زیر فایل کانفیگ آن را ایجاد می‌کنیم.

php artisan vendor:publish --provider=&quotHFarm\Excludable\ExcludableServiceProvider&quot --tag=&quotexcludable-config&quot

حالا کافیه trait مورد نیاز آن را به مُدلی که میخواهید این امکان را داشته باشد، اضافه کنید.

<?php namespace App\Models; use HFarm\Excludable\Excludable; class Article extends Model { use Excludable; protected $fillable = [ 'title', 'body', ]; }

حالا با دستورات زیر به راحتی می‌توانید اون رکورد مورد نظر خودتون رو به جدول excludable اضافه کنید و به این ترتیب اون رکورد (که میتواند یک مقاله یا حتی یک کاربر باشد) را از دید سایر کاربران پنهان کنید.

use App\Models\Article; $article = Article::query()->findOrFail(1) $article->addToExclusion(); $article->excluded(); // returns true

دستور زیر می‌توانید همه مقالات مورد نظر را (هم مقالات استثناء شده و هم سایر مقالات) را نمایش دهید.

use App\Models\Article; Article::withExcluded()->get();

همچنین با دستور زیر می‌توانید تنها مقالات استثناء شده را ببینید.

use App\Models\Article; Article::onlyExcluded()->get();

اگر سوالی داشتید در کامنتها بپرسید، حتما پاسخ خواهم داد.

لاراولphplaravel
توسعه دهنده بک اند (پارس سیستم)
شاید از این پست‌ها خوشتان بیاید