我有一个自行开发的Laravel 5.1基础应用程序,我在其上构建特定的应用程序。基本应用程序使用命名路由进行登录,自然称为“登录”,它侦听GET / login。
在我的一个特定应用程序中,我试图重载该路由以将请求发送到不同的控制器。它似乎工作了一段时间,但随后又开始转向基础应用程序的控制器。我确定我改变了一些东西来打破它,但问题是我无法弄清楚如何再次修复它。
我的基本应用程序路由都在app / Http / Routes / core.php中定义。相关路线:
Route::get('login', [
'as' => 'login',
'uses' => '\MyVendor\Core\Http\Controllers\AuthController@getLogin'
]);
我的特定应用程序路由在app / Http / Routes / app1.php中定义。相关路线:
Route::get('login', [
'as' => 'login',
'uses' => 'App1\AuthController@getLogin'
]);
App2和App3的定义类似。我的app / Http / routes.php添加了这样的路由:
require 'Routes/core.php';
Route::group(['domain' => 'app1.com'], function() {
require 'Routes/app1.php';
});
Route::group(['domain' => 'app2.com', function() {
require 'Routes/app2.php';
});
Route::group(['domain' => 'app3.com', function() {
require 'Routes/app3.php';
});
我看到的问题是访问app1.com/login,app2.com/login和app3.com/login会导致执行\MyVendor\Core\Http\Controllers\AuthController@getLogin
而不是App1\AuthController@getLogin
。
编辑:我更改了问题描述,因为我将其描述为调用route('login')
时出现问题。
答案 0 :(得分:1)
Laravel中的路由索引遵循"$domain$uri"
格式,因此带有域的路由不会覆盖没有域的路由。没有域的后备路由应该在域组之后声明,因此它稍后在路由集合中并且在具有匹配域的路由之前不匹配。
答案 1 :(得分:0)
"路线的最新定义是有效路线"
这不是一个错误,这是预期的行为,一个简单的例子是将变量设置为value 1
,然后将其设置为value 2
,当然(最)近期值发生。