Функция Path в Laravel для URL с идентификатором и Slug - PullRequest
0 голосов
/ 26 марта 2020

Я создал следующий метод в модели News в проекте Laravel:

  public function path() {
    return route('news.show', $this);
  }

Теперь все работает нормально и возвращает следующую структуру URL: www.mydomain.com/news/{id}

Однако я бы хотел немного его настроить. Я хочу, чтобы моя структура URL была такой: www.mydomain.com/news/{id}/{slug}

Итак, я хочу знать, как мне нужно изменить функцию path, чтобы вернуть эту структуру URL - т.е. с id и slug?

Вот одно решение, которое я попробовал:

// web.php
Route::get('news/{article}/{slug}', 'NewsController@show')->name('news.show');

// News.php
class News extends Model
{
  public function path() {
    return route('news.show', $this);
  }
}

Затем я запускаю тинкер и запускаю эту функцию пути и получаю следующую ошибку :

Illuminate/Routing/Exceptions/UrlGenerationException with message 'Missing required parameters for [Route: news.show] [URI: news/{article}/{slug}].'

Я пробовал другие варианты, но, похоже, ничего не работает.

Есть идеи, как настроить это, чтобы оно работало?

Спасибо.

1 Ответ

1 голос
/ 26 марта 2020
// web.php
Route::get('news/{id}/{slug}', 'NewsController@show')->name('news.show');

Вам необходимо передать идентификатор статьи и слаг

// News.php
class News extends Model
{
  public function path() {
    return route('news.show', ['id' => $this->id, 'slug' => $this->slug]);
  }
}
...