如何在路由中设置2种参数
现在需要实现的地址是 display-1-0-0.html
第一个1:话题(栏目)
第二个0:话题的分类
第三个0:翻页码
现在先抛开翻页吗不说。
想实现的一个功能是:如果当前的话题不存在分类。那么地址栏是0.从话题列表里点击了某个分类,第二个0就替换成对应的分类的id。
路由里的写法是:
Route::get('display-{articletopic:id}-{articletype:id}.html', [App\Http\Controllers\DisplayController::class, 'show'])->name('display.show');
控制器里也用了话题和分类的模型。(话题模型1对多也绑定了分类的模型)
public function show(ArticleTopic $articletopic, ArticleType $articletype)
{
return view('display.show', compact('articletopic'));
}
然后就是在视图里,默认的地址是
<a href="{{ route('display.show', [$articletopic->id, '0']) }}">
如果是分类的地址是
@foreach($articletopic->ArticleTypes()->get() as $Type)
<li>
<a href="{{ route('display.show', [$articletopic->id, $Type->id]) }}">{{ $Type->name }}</a>
</li>
@endforeach
现在访问带分类的。也就是
display-1-1.html
display-1-2.html
是没问题的。但是 display-1-0.html 这里就是404.他应该是默认不带分类的整个话题的列表。在a标签里也给了一个 0作为传路由的参数,我能理解是因为分类的模型里查询不到0这个id。所以报错,
所以这里应该怎么解决呢?