考虑以下两个laravel路由指令(我使用的是laravel版本5.0.35,但我在5.5版中发现了相同的行为):
Route::get('/a/b', function(){return "One";});
.
.
.
Route::get('/a/b', function(){return "Two";});
我知道他们没有多大意义,但要考虑一下。 从理论上讲,优先考虑的是第一个优先于第二个。但是,如果您使用
访问该网站 http://whatever.com/a/b
回应是
两个
我想这是因为即使真正选择的指令是第一个,第二个 OVERWROTE 第一个带有他的返回值。
我的问题是:这是预期的行为吗?因为当你在路径文件中只有两行时可能很明显,但是当你有几十行时,你可能会很明显,并且你无意中可能会复制相同的指令,并认为第一个指令的返回值是要返回的指令。
答案 0 :(得分:3)
这是预期的行为吗?
是。每当您创建具有相同名称的路由时,在项目加载时,它将替换路径文件(LIFO method)上的最后一个。当我们在项目中添加一些更改时,我们曾经运行composer dump-autoload; php artisan route:clear
。使用所有这些命令,它会转储所有先前的路由并将新路由加载到应用程序内存。
当我做项目时,我遇到了同样的问题。在检查时我得到了重复的路线名称问题。一旦修好,所有运行顺利。