در پستی قبلی پکیجی را معرفی کردم که برای شما این امکان را فراهم می کرد که برای مدل های خود در لاراول فیلتر ایجاد کنید. مشاهده پست در اینجا.
آخرین نسخه منشتر شده از این پکیج در مخزن گیت هاب قابل دسترس می باشد: V1.0.0
همانطور که قبلا توضیح دادم شما در یک پروژه نیاز به فیلتر کردن یک مدل مانند User دارید. مثلا فیلتر کردن کاربران بر اساس سن،جنسیت، وضعیت آنلاین یا آفلاین بودن و غیره... .
ممکن است شما بخواهید یک فیلتر با مجوز خاصی اعمال شود.بعنوان مثال شما ممکن است تعیین کنید اگر یک کاربر مدیر است یا دارای یک حساب ممتاز می باشد می تواند فیلتر وضعیت آنلاین یا آفلاین بودن کاربران را اعمال کند.در ادامه برای درک بهتر یک مثال عملی را انجام خواهیم داد.
در ابتدا اگر لاراول را نصب نکرده اید، دستور زیرا برای نصب اجرا کنید:
$ composer create-project --prefer-dist laravel/laravel authorize-filter
بعد از نصب وارد پروژه شوید و پکیج EloquentBuilder را با دستور زیر نصب کنید:
$ composer require mohammad-fouladgar/eloquent-builder
حالا باید در پوشه app پوشه جدیدی بنام EloquentFilters ایجاد کنید. این پوشه محل ذخیره سازی فیلتر مدل ها می باشد.
در این مرحله، ما نیاز داریم به ساخت یک Route برای لیست و فیلتر کردن کاربران. بنابراین فایل routes/web.php را باز کنید و route زیر را اضافه کنید:
routes/web.php
Route::get('users', 'UserController@index');
سپس باید یک کنترلر به اسم UserController به صورت زیر ایجاد کنیم:
حالا شما میتوانید url زیر را در مرورگر خود باز کنید:
http://localhost:8000/users
با اجرای این url لیست کاربران بدون محدودیت برمی گردد.در مرحله بعد دو فیلتر جنسیت و وضعیت را پیاده سازی خواهیم کرد.
در این قسمت میخواهیم کاربران را براساس جنسیت فیلتر کنیم.ابتدا باید یک پوشه جدید بنام User در پوشه EloquentFilters ایجاد کنیم.این پوشه شامل فیلترهای مدل User می باشد.سپس یک فایل جدید بنام GenderFilter.php بصورت زیر بسازید:
app/EloquentFilters/User/GenderFilter.php
بعد از ساخت فیلتر بالا،شما میتوانید آنرا بصورت زیر روی کوئری خود اعمال کنید:
http://localhost:8000/users?filter[gender]=male
با اجرای این url فقط لیست کاربرانی برمی گردد که جنسیت آنها male است.
این فیلتر مشابه فیلتر جنسیت می باشد با این تفاوت که این فیلتر به کاربری که دارای حساب ممتاز باشد مجوز اعمال فیلتر بر روی کوئری را می دهد. به فیلتر زیر نگاهی داشته باشید:
app/EloquentFilters/User/StatusFilter.php
همانطور که مشاهده میکنید، این فیلتر یک متد بنام 'authorize' دارد. درون این متد میتوانید بررسی کنید که کاربر مجوز اعمال فیلتر داده شده را دارد یا خیر.
برای اعمال فیلتر بالا url زیر را در مرورگر خود باز کنید:
http://localhost:8000/users?filter[gender]=male&filter[status]=online
این url لیست کاربرانی که جنسیت male دارند و وضعیت آنها online می باشد را بر میگرداند.
این در صورتی است که متد authorize مقدار true را برگرداند یا در کلاس فیلتر پیاده سازی نشود.(مانند فیلتر جنسیت)
برای دیدن جزیئات بیشتر اینجا کلیک کنید.
در این مقاله نحوه استفاده از پکیج EloquentBuilder را در فریم ورک لاراول را یاد گرفتیم.
همچنین یاد گرفتیم:
و در نهایت داشتن یک کد تمیز،خوانا و قابل توسعه.
امیدوارم که این آموزش مورد توجه شما قرار گرفته باشه. خوشحال میشم نظرات شما را داشته باشم.
موفق باشید.