Маршрутизация Laravel

220
12 февраля 2020, 09:40

Всем привет, столкнулся с небольшой проблемой. Допустим есть маршруты:

Route::get('category/{id}/{action}')

Получается, что ссылки в виде

/category/1/show
/category/1/edit
/category/1/remove

Подходят под наш маршрут. Это все хорошо, но нужно чтобы они выполнялись в разных методах. И вот это уже не получается. Пробовал таким способом:

Route::get('category/{id}/{action}', "Controller@show")->where("action"=>"show")
Route::get('category/{id}/{action}', "Controller@edit")->where("action"=>"edit")
Route::get('category/{id}/{action}', "Controller@remove")->where("action"=>"remove")

Но при такой схеме, всегда выполняется последний маршрут.

Прошу вариант с парсом URL не предлагать. Хочу понять возможно ли это делать средствами laravel

Answer 1

Советую впервую очередь ознакомиться с документацией. Чтобы не плодить подобные действия достаточно создать ресурсный контроллер и в маршуте указать такой же тип - resourse.

Более подробно можно почитать здесь: https://laravel.com/docs/5.8/controllers#resource-controllers

Answer 2

Можно прописать разные методы в одном контроллере и в зависимости от action выполнять эти методы. К примеру в web.php оставляете только одну строку

Route::get('category/{id}/{action}', "Controller@router");

В контроллере делаете так

public function router($id, $action) {
    if ($action == 'show') {
        $this->show($id);
    }
}
public function show($id) {
    //ваш код
}
public function edit($id) {
    //ваш код
}
public function remove($id) {
    //ваш код
}
READ ALSO
Telegram боты: общаться с ботом при помощи апи

Telegram боты: общаться с ботом при помощи апи

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

237
Laravel websockets

Laravel websockets

Всем привет! Я использую библиотеку https://githubcom/beyondcode/laravel-websockets

243
Миграции в Laravel, как работает метод onDelete()?

Миграции в Laravel, как работает метод onDelete()?

Не могу понять как в миграциях Laravel работает onDelete()Например, такая ситуация

228