narges
narges
خواندن ۴ دقیقه·۳ ماه پیش

لاراول نوا (Laravel Nova)

نوا یه پنل مدیریت پیشرفته و جذاب برای فریم‌ورک Laravel هستش که تونسته بسیاری از نیازهای مدیران برای استفاده از داشبوردهای مدیریتی رو حل کنه. این پنل امکانات بسیاری رو برای مدیریت منابع، کاربران، نقش‌ها و چیزای دیگه فراهم می‌کنه. میخوام به شکل خلاصه درباره قسمت‌های مختلف نوا و نحوه ساخت و مدیریت اون چیزایی که میدونم رو در اختیارتون قرار بدم.

نصب و اه‌اندازی

1. نصب وابستگی‌ها:

composer require laravel/nova

2. نصب نوا:

php artisan nova:install php artisan migrate

3. پیکربندی ورود:

از اونجایی که نوا نیاز به ورود داره، مطمئن بشید که سیستم احراز هویت شما به درستی پیکربندی شده باشه.

حالا بریم قسمت‌های مختلف نوا رو بشناسیم

1. منابع (Resources)

- منابع (Resources) در نوا بالاترین سطح از واحدهای قابل مدیریت هستن و معمولاً به مدل‌های Eloquent لاراول مرتبط می‌شن. هر منبع شامل متدهای مختلفی برای تعریف فیلدها، جستجو، فیلترها و اعمال دیگه هست.

دستور ایجاد Resource:

php artisan nova:resource Project

2. فیلدها (Fields)

فیلدها برای تعریف ستون‌های مرتبط با مدل استفاده می‌شن و مشخص می‌کنن که چه اطلاعاتی در رابط کاربری نمایش داده بشه. فیلدهای متنوعی برای نمایش و ویرایش دیتا داریم.از جمله Text، Boolean، DateTime، BelongsTo، HasMany و... .

1. Text::make('Name')

- برای نمایش و ویرایش متون کوتاه.

2. Textarea::make('Description')

- برای نمایش و ویرایش متون بلند.

3. Boolean::make('Active')

- برای نمایش و ویرایش مقادیر صحیح یا غلط.

4. Date::make('Birthdate')

- برای نمایش و ویرایش تاریخ‌ها.

5.DateTime::make('Published At')

- برای نمایش و ویرایش زمان و تاریخ ترکیبی.

6. Number::make('Price')

- برای نمایش و ویرایش مقادیر عددی.

7.

Select::make('Status')->options([ draft' => 'Draft', 'published' => 'Published', 'archived' => 'Archived',])

- برای نمایش و ویرایش گزینه‌های انتخابی از یک لیست.

8. BooleanGroup::make('Permissions')

- برای نمایش و ویرایش چندین مقدار صحیح یا غلط به صورت گروهی.

9. Image::make('Profile Picture')

- برای بارگذاری و نمایش تصاویر.

10.File::make('Document')

- برای بارگذاری و نمایش فایل‌ها.

11. Password::make('Password')

- برای نمایش و ویرایش رمز عبور.

تنظیمات اضافی فیلدها

1. nullable (پذیرش مقادیر تهی)

Text::make('Middle Name')->nullable()

2. required (ضروری بودن)

Text::make('First Name')->rules('required')

3. unique (یکتایی)

Text::make('Email')->rules('required', 'email', 'unique:users,email,{{resourceId}}')

4. displayUsing (نمایش سفارشی)

Number::make('Price')->displayUsing(function ($price) { return '$' . number_format($price, 2);})

5. sortable (قابل مرتب‌سازی بودن)

Text::make('Title')->sortable()

6.برای تعریف یک فیلد دارای ارتباط باید از فرمت زیر استفاده کنیم:

BelongsTo::make(&quotlabel&quot, &quotattribute&quot, RelatedModel::class)
  1. این فرمت اسم ستون تو پایگاه داده که شناسه مرتبط رو نگهداری می‌کنه و کلاس مدل مرتبط که این ارتباط رو تعریف می‌کنه رو میگیره.

ویژگی‌های فیلدها

ا `hideFromIndex()`: فیلد در لیست‌ (index) نمایش داده نشه.

ا `hideWhenCreating()`: فیلد هنگام ایجاد یه رکورد جدید نمایش داده نشه.

ا `hideWhenUpdating()`: فیلد هنگام بروزرسانی یه رکورد موجود نمایش داده نشه.

ا `nullable()`: فیلد رو به صورت null تعریف می‌کنه.

ا `required()`:فیلد رو به عنوان اجباری تعریف می‌کنه.

ا `sortable()`: مکان مرتب‌سازی رکوردها بر اساس این فیلد رو فراهم می‌کنه.

ا `searchable()`: امکان جستجوی رکوردها بر اساس این فیلد رو فراهم می‌کنه.

ا `creationRules()`: برای افزودن قوانین اعتبارسنجی هنگام ایجاد رکورد استفاده می‌شه.

ا `onlyOnIndex()`: فیلد رو طوری تنظیم می‌کنه که فقط تو صفحه شاخص نمایش داده بشه.

ا `onlyOnForms()`: فیلد رو طوری تنظیم می‌کنه که فقط تو فرم‌ها (ایجاد یا بروزرسانی) نمایش داده بشه.

ا `rules()`: برای تعیین قوانین اعتبارسنجی عمومی استفاده می‌شه.

ا `readonly()`: فیلد رو به حالت فقط خواندنی تنظیم می‌کنه.

بذارید مثالی از استفاده چند ویژگی برای یه فیلد `Text` بیاریم.

Text::make('Name') ->sortable() ->rules('required', 'max:255') ->hideWhenUpdating( ->showOnDetail() ->creationRules('unique:users,name') ->updateRules('unique:users,name,{resourceId}');

3.فیلترها (Filters)

- از فیلترها می‌تونیم برای محدود کردن نمایش دیتا استفاده کنیم. فیلترها می‌تونن بر اساس شرط‌های مختلفی داده‌ها رو به نمایش بذارن.

class UserRole extends Filter{ public $name = 'User Role'; public function apply(Request $request, $query, $value) { return $query->where('role', $value); } public function options(Request $request){ return [ 'Admin' => 'admin', 'User' => 'user', 'Manager' => 'manager', ]; } }

4.عدسی‌ها (Lenses)

لنزها برای سفارشی‌سازی نمای جدول‌ها و نمایش داده‌های خاص استفاده می‌شن.

class UsersWithMostPosts extends Lens{ public static function query(LensRequest $request, $query){ return $query->withCount('posts') ->orderBy('posts_count', 'desc'); } public function fields(Request $request){ return [ ID::make()->sortable(), Text::make('Name'), Number::make('Posts', 'posts_count')->sortable(), ]; } }

5. اکشن‌ها (Actions)

اکشن‌ها برای انجام عملیات‌های خاص روی منابع تعریف می‌شن.

تو فایل Resource ، می‌تونید به روش زیر دسترسی‌ها رو سفارشی‌سازی کنید:

public static function authorizedToCreate(Request $request) { // بازگشتtrue یا false بر اساس اینکه آیا کاربر می‌تواند رکورد جدید ایجاد کند یا نه } public function authorizedToUpdate(Request $request) { // بازگشتtrue یا false بر اساس اینکه آیا کاربر می‌تواند این رکورد را ویرایش کند یا نه } public function authorizedToDelete(Request $request) { // بازگشتtrue یا false بر اساس اینکه آیا کاربر می‌تواند این رکورد را حذف کند یا نه }

6.کاردها (Cards)

- کارت‌ها برای نمایش اطلاعات سفارشی در داشبورد استفاده می‌شن و می‌تونن به نمودارهای متفاوت و ویجت‌های کاربردی تبدیل بشن.

namespace App\Nova; use Laravel\Nova\Metrics\Value; use Illuminate\Http\Request; class UserMetrics extends Resource { public function cards(Request $request) { return [ new Metrics\UsersPerDay, // نشانگر تعداد کاربران جدید در روز ]; } }

ساخت منوها

منوهای نوا به صورت اتوماتیک بر اساس منابع تعریف شده ایجاد می‌شن. برای سفارشی سازی منوها می‌تونیم از کلاس `NovaServiceProvider` استفاده کنیم

namespace App\Providers; use Laravel\Nova\Nova; use Illuminate\Support\Facades\Gate; use Laravel\Nova\NovaApplicationServiceProvider; class NovaServiceProvider extends NovaApplicationServiceProvider{ public function boot(){ parent::boot(); Nova::navigation(function (Request $request) { return [ MenuItem::resource(\App\Nova\User::class), MenuItem::resource(\App\Nova\Project::class), // سایر منوها ]; }); } }

خلاصه که با استفاده از این بخش‌ها، می‌تونید نمای منابع خود را در داشبورد Laravel Nova سفارشی کنید و به کاربر امکان انجام عملیات‌های گوناگون رو بدین.

laravel novaلاراولlaravelmake ۲۷نمایش ویرایش
Backend developer
شاید از این پست‌ها خوشتان بیاید