РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
409 of 1392 menu

Метод bind

Метод bind применяется к объекту маршрута и позволяет явно задать логику разрешения модели для указанного параметра. Первым параметром передаётся имя параметра, вторым - замыкание, которое принимает значение параметра и возвращает модель или null.

Синтаксис

<?php Route::get('/users/{user}', function (User $user) { return $user; })->bind('user', function ($value) { return User::findOrFail($value); }); ?>

Пример

Давайте привяжем модель User к параметру 'user' с использованием замыкания:

<?php use AppModelsUser; use IlluminateSupportFacadesRoute; Route::get('/users/{user}', function (User $user) { return 'User: ' . $user->name; })->bind('user', function ($value) { return User::where('slug', $value)->firstOrFail(); }); ?>

Результат выполнения кода при переходе по адресу /users/john-doe:

"User: John Doe"

Пример

Давайте используем привязку с дополнительной логикой проверки активного статуса пользователя:

<?php use AppModelsUser; use IlluminateSupportFacadesRoute; Route::get('/profile/{user}', function (User $user) { return 'Profile: ' . $user->email; })->bind('user', function ($value) { $user = User::where('id', $value)->first(); if (!$user || !$user->is_active) { abort(404, 'User not found or inactive'); } return $user; }); ?>

Результат выполнения кода для активного пользователя:

"Profile: john@example.com"

Результат выполнения кода для неактивного пользователя:

"404: User not found or inactive"

Пример

Давайте привяжем модель Post с проверкой принадлежности текущему пользователю:

<?php use AppModelsPost; use AppModelsUser; use IlluminateSupportFacadesRoute; use IlluminateSupportFacadesAuth; Route::get('/posts/{post}', function (Post $post) { return 'Post: ' . $post->title; })->bind('post', function ($value) { $post = Post::with('user')->where('slug', $value)->first(); if (!$post || $post->user_id !== Auth::id()) { abort(403, 'You do not own this post'); } return $post; }); ?>

Результат выполнения кода для поста, принадлежащего авторизованному пользователю:

"Post: My New Article"

Смотрите также

  • метод get,
    который определяет маршрут для GET-запросов
  • метод where,
    который добавляет ограничения на параметры маршрута
  • метод middleware,
    который назначает промежуточное ПО для маршрута
  • метод scopeBindings,
    который включает привязку области видимости для вложенных моделей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить