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 结构——即同时具有 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);
}
}
然后我启动 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]);
}
}
我在 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 结构——即同时具有 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);
}
}
然后我启动 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]);
}
}