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

Метод singleton

Метод singleton класса Route определяет ресурсный маршрут, который работает с единственным экземпляром модели. В отличие от стандартного ресурсного маршрута, где модели идентифицируются по идентификатору, данный метод предполагает, что существует только один экземпляр модели, и для него не требуется параметр в URL. Метод принимает первым параметром имя пути (URI), а вторым - имя контроллера или замыкание. Третьим параметром можно передать массив опций для настройки маршрута.

Синтаксис

<?php use Illuminate\Support\Facades\Route; Route::singleton($uri, $controller); Route::singleton($uri, $controller, $options); ?>

Пример

Давайте зарегистрируем маршрут для управления настройками приложения, используя единственный экземпляр модели Setting:

<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\SettingController; Route::singleton('settings', SettingController::class); ?>

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

"GET /settings - index" "GET /settings/edit - edit" "PUT /settings - update"

Как видно из результата, метод создаёт три маршрута для работы с единственным экземпляром модели.

Пример

Давайте создадим контроллер для работы с профилем пользователя с использованием метода singleton:

<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\ProfileController; Route::singleton('profile', ProfileController::class); ?>
<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class ProfileController extends Controller { public function index() { $user = Auth::user(); return view('profile.index', ['user' => $user]); } public function edit() { $user = Auth::user(); return view('profile.edit', ['user' => $user]); } public function update(Request $request) { $user = Auth::user(); $user->update($request->validated()); return redirect()->route('profile.index'); } } ?>

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

"GET /profile - index" "GET /profile/edit - edit" "PUT /profile - update"

Пример

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

<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\DashboardController; Route::singleton('dashboard', DashboardController::class, [ 'names' => [ 'index' => 'dashboard.home', 'edit' => 'dashboard.settings', 'update' => 'dashboard.save', ], 'only' => ['index', 'edit', 'update'], ]); ?>

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

"GET /dashboard - dashboard.home" "GET /dashboard/edit - dashboard.settings" "PUT /dashboard - dashboard.save"

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

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

  • метод resource,
    который создаёт полный набор ресурсных маршрутов
  • метод apiResource,
    который создаёт ресурсные маршруты для API
  • метод group,
    который группирует маршруты с общими атрибутами
  • метод prefix,
    который добавляет префикс к группе маршрутов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить