首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >同路不同控制器

同路不同控制器
EN

Stack Overflow用户
提问于 2022-04-26 05:31:50
回答 3查看 288关注 0票数 0

我试图使用相同的路线,但使用不同的控制器,但没有得到一个干净和好的解决方案,例如,我的意图是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Domain.com/category-slug

Domain.com/article-slug

但是每个控制器都有不同的控制器,使用相同的结构路由不会到达预期的控制器,上面留下了我的web.php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Route::get('/', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/{category}', [App\Http\Controllers\QuestionController::class, 'index'])->name('category.list');

Route::get('/{slug}', [App\Http\Controllers\QuestionController::class, 'show'])->name('questions.show');

有没有人遇到同样的情况,以及如何处理?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-04-26 13:07:11

正如Laravel在这种情况下所说的,第二条路由将永远不会被访问,因为第一条路由将覆盖它,因此,我建议您只能检查即将到来的category,如果它与数据库中的任何类别不匹配,然后将请求重定向到下一条路径,因为它很可能匹配Article模型中的任何记录,或者在没有返回数据的情况下最终中止请求。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function index($category)
{
   $data = \App\Models\Category::where('name', $category)->get();

    if (empty($data)) {
        return redirect()->route('questions.show', $category);
    }

    return view('index', compact('data'));
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function show($article)
{
   $data = \App\Models\Article::where('name', $article)->get();

    if (empty($data)) {
        abort(404, "NOT FOUND");
    }

    return view('show', compact('data'));
}
票数 0
EN

Stack Overflow用户

发布于 2022-04-26 22:53:22

无法通知系统,路径中给定的id属于类别或段塞,第一条路径将不让系统进入第二条路由。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Route::get('/', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/{category}', [App\Http\Controllers\QuestionController::class, 'index'])->name('category.list');

Route::get('/{slug}', [App\Http\Controllers\QuestionController::class, 'show'])->name('questions.show');

因此,修改它以添加id类型的前缀,如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Route::get('/', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('category/{category}', [App\Http\Controllers\QuestionController::class, 'index'])->name('category.list');

Route::get('slug/{slug}', [App\Http\Controllers\QuestionController::class, 'show'])->name('questions.show');

它看起来就像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Domain.com/category/1
Domain.com/slug/1
票数 1
EN

Stack Overflow用户

发布于 2022-04-26 05:38:25

我建议对这两种类型的代码片段使用一个控制器操作,以确定需要做什么,并将请求转发到相应的控制器操作。

https://symfony.com/doc/current/controller/forwarding.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72014883

复制
相关文章
python中的lambda表达式
这就是求x+y用普通方法定义函数和用lambda表达式的区别。lambda表达式没有函数名,x, y 与定义一般函数时括号中的参数一致,‘:’右边的是要返回的值。lambda表达式不需要用”return”关键字返回内容,函数默认会返回”:”右边的值。注意例子中的lambda表达式没有函数名
灯珑LoGin
2022/10/24
5130
Python中的lambda表达式
在Python中,除了常规函数,你应该也会在代码中见到一些“非常规”函数,它们往往很简短,就一行,并且有个很酷炫的名字——lambda,没错,这就是匿名函数。
全栈程序员站长
2022/11/02
5600
python lambda表达式举例_Python中lambda表达式[通俗易懂]
lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式。冒号前是参数,冒号后是返回值。
全栈程序员站长
2022/11/07
6450
Qt中的lambda表达式
这里为什么值传递可以修改按钮的文本属性呢? 因为这里拷贝的是地址,lambda函数体内通过值传递得到的btn指向的地址不变。
大忽悠爱学习
2021/11/15
9650
java中lambda表达式[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156874.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/08
4070
java中lambda表达式[通俗易懂]
lambda表达式python_Python中的Lambda表达式「建议收藏」
Lambda表达式在python程序中是一种很常见的匿名方法的书写形式,它书写起来非常简单,但是牺牲了可读性。下面来看一下Lambda的简单介绍。
全栈程序员站长
2022/11/02
3290
带你彻底掌握 Lambda 表达式(上)
但平时在和很多小伙伴的交流和面试中,发现很多人仍停留在 JDK7 及以前的认知层面,Lambda 表达式、方法引用、Stream 流、default 关键字,很少使用,甚至还有不少小伙伴不知道怎么用!!
天之痕苏
2020/02/11
4520
带你彻底掌握 Lambda 表达式(上)
java中Lambda表达式的使用
Lambda 表达式是一种匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和名字。
大道七哥
2019/08/23
2.4K0
java中Lambda表达式的使用
说说Python中的lambda表达式?
小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
程序员小猿
2021/01/19
3770
C#中的Lambda表达式
在看C#中的Lambda表达式之前,先来看一个概念:匿名方法。学过Java的亲们,可能对这个概念比较了解。Java JDK8中也引入了Lambda表达式。
卡尔曼和玻尔兹曼谁曼
2019/01/25
8010
C#中的Lambda表达式
浅谈 Java 中的 Lambda 表达式
Lambda 表达式是一种匿名函数,它可以作为参数传递给方法或存储在变量中。在 Java8 中,它和函数式接口一起,共同构建了函数式编程的框架。
浪漫主义狗
2023/09/04
3750
浅谈 Java 中的 Lambda 表达式
C++中Lambda表达式
lambda introducer [lambda-introducer],标识一个Lambda表达式的开始,这部分必须存在,不能省略。lambda-introducer中的参数是传递给编译器自动生成的函数对象类的构造函数的。函数对象参数只能使用那些到定义Lambda为止时Lambda所在作用范围内可见的局部变量(包括Lambda所在类的this)。函数对象参数有以下形式: 1、[]:不使用任何对象参数。 2、[=]:函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是值传递方式(相当于编译器自动为我们按值传递了所有局部变量)。 3、[&]:函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是引用传递方式(相当于编译器自动为我们按引用传递了所有局部变量)。 4、[this]:函数体内可以使用Lambda所在类中的成员变量。 5、[a]:将a按值进行传递。按值进行传递时,函数体内不能修改传递进来的a的拷贝,因为默认情况下函数是const的。要修改传递进来的a的拷贝,可以添加mutable修饰符。 6、[&a]:将a按引用进行传递。 7、[a, &b]:将a按值进行传递,b按引用进行传递。 8、[=,&a, &b]:除a和b按引用进行传递外,其他参数都按值进行传递。 9、[&, a, b]:除a和b按值进行传递外,其他参数都按引用进行传递。
卡尔曼和玻尔兹曼谁曼
2019/01/22
8780
C++中Lambda表达式
python中bool函数_bool()函数以及Python中的示例
bool() function is used to convert a given value to the Boolean value (True or False) as per the standard truth testing procedures. It accepts a value (like an integer, list, maps, etc) and converts it into a Boolean value.
全栈程序员站长
2022/09/05
1.6K0
Java中lambda表达式详解
上面的代码中,e是一个lambda的对象,根据java的继承的特性,我们可以说e对象的类型是继承自eat接口。而e1是一个正常的匿名类的对象.
付威
2018/12/05
4.7K0
Java中lambda表达式详解
Java中的小知识——lambda表达式
但是我们发现,这样虽然在步骤上简单了许多,但是在空间上看着并不简单,甚至显得比较复杂。
用户7073689
2020/03/17
9930
Python中lambda表达式的常见用法
非常抱歉,昨天发的代码中有一处小错误,已通过留言的方式进行了纠正,详情请见【详解Python列表推导式】 lambda表达式常用来声明匿名函数,即没有函数名字的临时使用的小函数。lambda表达式只可以包含一个表达式,不允许包含其他复杂的语句,但在表达式中可以调用其他函数,并支持默认值参数和关键参数,该表达式的计算结果相当于函数的返回值。下面的代码演示了不同情况下lambda表达式的应用。 >>> f = lambda x, y, z: x+y+z #把lambda表达式当做函数使用 >>> print(f
Python小屋屋主
2018/04/16
1.2K0
Java中的集合转换(lambda表达式)
        在Java应用中进行集合对象间的转换是非常常见的事情,有时候在处理某些任务时选择一种好的数据结构往往会起到事半功倍的作用,因此熟悉每种数据结构并知道其特点对于程序员来说是非常重要的,而只知道这些是不够的,有时候你需要一个Map来处理数据,而此时你手中只有一个List,此时知道如何将List转为Map就非常重要了,而只知道for循环将List转为Map这就太Low了,JDK1.8 吸收了许多函数式编程的思想,其中的lambda表达式不仅功能强大,而且减少了很多不必要的代码,本文不是介绍lambda表达式的,主要是利用lambda表达式进行Java中结合的转换,当然lambda表达式的使用往往离不开JDK1.8 的stream类,本文主要使用lambda表达式和stream类来实现Java中集合的转换,也会涉及到利用stream对数据进行的一些处理。
Tyan
2022/05/09
7950
Java8中的Lambda表达式
大家好啊,我是汤圆,今天给大家带来的是《Java8中的Lambda表达式》,希望对大家有帮助,谢谢
汤圆学Java
2021/04/16
3280
Java8中的Lambda表达式
如何在 Linux 中检查打开的端口?
无论您是使用 Linux 作为服务器还是桌面,了解开放端口或正在使用的端口在各种情况下都会有所帮助。
网络技术联盟站
2022/04/03
7.6K0
如何在 Linux 中检查打开的端口?
点击加载更多

相似问题

如何在lambda表达式中检查null

35

用<bool>和System.Nullable<bool>实现Lambda表达式

70

ReactriveX:将Observable<bool>上的异常捕获为lambda表达式

13

在lambda表达式中否定Func<T、bool>

25

在if语句中返回bool的Lambda表达式

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文