Ресурс маршрутизации Laravel

У меня есть модель с именем PriceList, и когда я использую функцию маршрутизации ::resource, она работает, только если я передаю price/lists в качестве первого параметра.

Например, если я сделаю следующее:

Route::resource('pricelists', 'PriceListsController');

Затем внутри своего контроллера я делаю следующее:

use App\PriceList;

class PriceListsController
{
    public function show(PriceList $list)
    {
        dd($list);
    }
}

Если я захожу по URL-адресу: /pricelists/1, он дает мне пустой экземпляр PriceList:

PriceList {#802 ▼
  #appends: array:4 [▶]
  #hidden: array:4 [▶]
  #with: array:1 [▶]
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #withCount: []
  #perPage: 15
  +exists: false
  +wasRecentlyCreated: false
  #attributes: []
  #original: []
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #visible: []
  #fillable: []
  #guarded: array:1 [▶]
}

Однако, если я изменю ресурс на:

Route::resource('price/lists', 'PriceListsController');

И посетите URL-адрес: /price/lists/1, тогда я получу нужный экземпляр PriceList:

PriceList {#820 ▼
  #appends: array:4 [▶]
  #hidden: array:4 [▶]
  #with: array:1 [▶]
  #connection: "mysql"
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:7 [▶]
  #original: array:7 [▶]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #dispatchesEvents: []
  #observables: []
  #relations: array:1 [▶]
  #touches: []
  +timestamps: true
  #visible: []
  #fillable: []
  #guarded: array:1 [▶]
}

Как мне поменять его с price/lists на pricelists?

Обновлять

Я пробовал использовать функцию Route::model в моем RouteServiceProvider:

Route::model('pricelists', App\PriceList::class);

Вы смотрели php artisan route:list?

ceejayoz 20.04.2018 20:56

@ceejayoz Спасибо. Я просмотрел список маршрутов и обнаружил проблему. Я использовал pricelists в функции ::model вместо pricelist.

Chin Leung 20.04.2018 21:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
2
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я посмотрел на php artisan route:list и нашел следующий маршрут:

|GET|HEAD| api/pricelists/{pricelist}|pricelists.show|App\Http\Controllers\PriceListsController@show|web,auth|

Итак, я изменил свой RouteServiceProdiver на:

Route::model('pricelist', PriceList::class);

Другие вопросы по теме