Публикации - Laravel

HMVC в Laravel - Middleware - Подключение по классу

Вместо регистрации middleware в файле kernel, имеется возможность подключения по классу.

Использование класса со статическим методом может сделать его более читаемым. Возьмем, к примеру, создание статических методов для настройки параметров маршрутизатора. Посмотрите в примере ниже, как мы использовали имя класса, но также у нас есть статический метод overAgeOf, который дает понять, что параметр будет делать по отношению к промежуточному программному обеспечению.

use App\Http\Middleware;
use App\Http\Controllers;

// using the class name directly
Route::get('/eu/user', Controllers\UserController::class)
    ->middleware(
        'auth:api',
        Middleware\IsAdult::class
    );

// using a static method to apply parameters
Route::get('/us/user', Controllers\UserController::class)
    ->middleware(
        'auth:api',
        Middleware\IsAdult::overAgeOf(21)
    );

Нам нужно только реализовать статический метод в нашем промежуточном программном обеспечении, чтобы вернуть имя класса с двоеточием, а затем наши параметры, разделенные запятыми. Во всём остальном, вы можете видеть, что в нашем промежуточном программном обеспечении нет ничего особенного.

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class IsAdult
{
    public static function overAgeOf(int $age) {
        return self::class . ':' . $age;
    }

    public function handle(Request $request, Closure $next, int $age = 18)
    {
        if ($request->user()->age < $age) {
            abort(403);
        }

        return $next($request);
    }
}

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться


Изображения Видео

1. Подключение CKEditor https://artisansweb.net/install-use-ckeditor-laravel/#comments
2. Регистрация и авторизация https://know-online.com/post/laravel-reg
3. Что нового в Laravel 8 https://sergeymukhin.com/blog/chto-novogo-v-laravel-80
4. Авторизация Sanctum <iframe width="560" height="315" src="https://www.youtube.com/embed/MT-GJQIY3EU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>