路由中如何定义一个可 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.

应该怎么写呢?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

用了2个路由解决了

1年前 评论
讨论数量: 9

不喜欢这样定义的 Route::get('/display-{articletopic:id}-{articletype:id}.html', 要是我定义直接就是Route::get('/display-{id}-{type}.html',

1年前 评论
celaraze 1年前
ISeee (楼主) 1年前
fatrbaby

说好的psr-2和psr-12呢

1年前 评论

我看到有的文章跳转是带上标题名称的 例如 blog/this-is-a-blog-{id} 而不是blog/{id} 这是以为seo吗 这种写法有什么好处

1年前 评论
php_yt 1年前

用了2个路由解决了

1年前 评论
Mutoulee

2天了你这个问题还没解决啊 。。。

1年前 评论
ISeee (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!