Laravel 中用于 URL 的路径函数,带有 ID 和 Slug

Path Function in Laravel for URL With ID and Slug

我在 Laravel 项目的 News 模型中创建了以下方法:

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

现在,这工作得很好并且 return 是以下 url 结构:www.mydomain.com/news/{id}

不过,我想稍微调整一下。我希望我的 url 结构是这样的:www.mydomain.com/news/{id}/{slug}

所以,我想知道的是我必须如何修改 path 函数才能 return 这个 url 结构——即同时具有 idslug?

这是我尝试过的一种解决方案:

// 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);
  }
}

然后我启动 tinker 和 运行 该路径函数并得到以下错误:

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

我尝试了其他变体 -- 但似乎没有任何效果。

知道如何调整它才能正常工作吗?

谢谢。

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

您需要传递文章 ID 和 slug

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