路由中如何定义一个可 if 的参数
最终实现的目标是:display-1-1.html
第一个参数是话题(栏目)
第二个参数是话题分类
想法是当这个话题不存在分类时,地址栏是display-1-0.html
如果有分类存在,那么就是 display-1-1.html display-1-2.html display-1-3.html ….
路由中
Route::get('/display-{articletopic:id}-{articletype:id}.html', [App\Http\Controllers\DisplayController::class, 'show'])->name('display.show');
控制器中
public function show(ArticleTopic $articletopic, ArticleType $articletype)
{
if ($articletopic->ArticleTypes()->get())
{
$articletype = $articletopic->ArticleTypes()->get();
}
else
{
$articletype = '0';
}
return view('display.show', compact('articletopic'));
}
视图中
@if (count($articletopic->ArticleTypes()->get()) > '0')
<ul id="ArticleType">
<li id="tp_all">
<a href="{{ route('display.show', [$articletopic->id, '0']) }}">{{ __('lang_Common.Display.All Types') }}</a>
</li>
@foreach($articletopic->ArticleTypes()->get() as $Type)
<li>
<a href="{{ route('display.show', [$articletopic->id, $Type->id]) }}">{{ $Type->name }}</a>
</li>
@endforeach
</ul>
@endif
目前这个状况就是因为拿视图里的
<a href="{{ route('display.show', [$articletopic->id, '0']) }}">
0 去查询了分类的模型,导致如果访问display-1-0.html 时是404.
应该怎么写呢?
用了2个路由解决了