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

Route::has

Метод has класса Route предназначен для проверки существования маршрута по его имени. Он возвращает true, если маршрут с указанным именем зарегистрирован в приложении, и false в противном случае. Это полезно для условной обработки, когда необходимо проверить наличие определённого маршрута перед генерацией ссылки или выполнением редиректа.

Синтаксис

<?php Route::has($name); ?>

Метод принимает один обязательный параметр:

  • $name - строковое имя маршрута, которое было задано при регистрации через метод name

Пример

Давайте зарегистрируем маршрут с именем 'profile' и проверим его существование с помощью метода has:

<?php use Illuminate\Support\Facades\Route; Route::get('/profile', function () { return 'User profile'; })->name('profile'); // Проверяем существование маршрута $res = Route::has('profile'); var_dump($res); $res2 = Route::has('settings'); var_dump($res2); ?>

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

bool(true) bool(false)

Пример

Используем метод has внутри контроллера для условного редиректа в зависимости от наличия маршрута:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Route; class UserController extends Controller { public function show($id) { if (Route::has('profile')) { return redirect()->route('profile'); } return response()->json([ 'message' => 'Profile route not found' ]); } } ?>

Пример

Рассмотрим использование метода has в Blade-шаблоне для условного отображения ссылки:

@if (Route::has('profile')) <a href="{{ route('profile') }}">Profile</a> @else <span>Profile page is not available</span> @endif @if (Route::has('settings')) <a href="{{ route('settings') }}">Settings</a> @endif

Результат выполнения кода (если маршрут 'profile' существует, а 'settings' - нет):

<a href="http://example.com/profile">Profile</a> <span>Settings page is not available</span>

Пример

Метод has также работает с маршрутами, зарегистрированными в группах с префиксами:

<?php use Illuminate\Support\Facades\Route; Route::prefix('admin')->group(function () { Route::get('/dashboard', function () { return 'Admin dashboard'; })->name('admin.dashboard'); Route::get('/users', function () { return 'Users list'; })->name('admin.users'); }); // Проверяем существование маршрутов $res = Route::has('admin.dashboard'); var_dump($res); $res2 = Route::has('admin.posts'); var_dump($res2); ?>

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

bool(true) bool(false)

Пример

Практическое применение метода has при работе с модульной структурой приложения:

<?php namespace App\Services; use Illuminate\Support\Facades\Route; class MenuService { public function getMenuItems(): array { $items = [ ['label' => 'Home', 'route' => 'home'], ['label' => 'About', 'route' => 'about'], ['label' => 'Contact', 'route' => 'contact'], ['label' => 'Blog', 'route' => 'blog'], ['label' => 'Profile', 'route' => 'profile'], ]; $res = []; foreach ($items as $item) { if (Route::has($item['route'])) { $res[] = $item; } } return $res; } } ?>

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

  • метод name,
    который задаёт имя маршрута
  • метод is,
    который проверяет соответствие текущего маршрута заданному имени
  • метод current,
    который возвращает текущий обрабатываемый маршрут
  • функция route,
    которая генерирует URL по имени маршрута
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить