علیرضا فرهادی
2 سال پیش توسط علیرضا فرهادی مطرح شد
0 پاسخ

تعریف middleware در کنترلر لاراول 11

سلام دوستان
من از لاراول 11 استفاده میکنم . با استفاده از پکیج spatie/laravel-permission میخوام دسترسی هارو تعریف کنم. مشکلم اینه که دایکیومنتش اپدیت نیست!
در دایکیونتش برای تعریف میدلویر در کنترلر اینجوری نوشته :

public function __construct()
{
    $this->middleware(['role:manager','permission:publish articles|edit articles']);
    // or
    $this->middleware(['role_or_permission:manager|edit articles']);
    // or with specific guard
    $this->middleware(['role_or_permission:manager|edit articles,api']);
}

ولی در لاراول 11 برای تعریف middleware در constractor باید اینجوری بنویسی:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Routing\Controllers\HasMiddleware;
use Illuminate\Routing\Controllers\Middleware;

class UserController extends Controller implements HasMiddleware
{
    /**
     * Get the middleware that should be assigned to the controller.
     */
    public static function middleware(): array
    {
        return [
            'auth',
            new Middleware('log', only: ['index']),
            new Middleware('subscribed', except: ['store']),
        ];
    }

    // ...
}

الان چجوری باید این کد دایکیونت رو به متد جدید لاراول تبدیل کنم؟ لطفا راهنمایی کنید.

لینک های مربوطه:
https://spatie.be/docs/laravel-permission/v6/basic-usage/middleware#content-controllers
https://laravel.com/docs/11.x/controllers#controller-middleware