Laravel 5.1 - 重载路由

时间:2016-01-26 18:10:51

标签: php laravel laravel-5 laravel-5.1

我有一个自行开发的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')时出现问题。

2 个答案:

答案 0 :(得分:1)

Laravel中的路由索引遵循"$domain$uri"格式,因此带有域的路由不会覆盖没有域的路由。没有域的后备路由应该在域组之后声明,因此它稍后在路由集合中并且在具有匹配域的路由之前不匹配。

答案 1 :(得分:0)

"路线的最新定义是有效路线"

这不是一个错误,这是预期的行为,一个简单的例子是将变量设置为value 1,然后将其设置为value 2,当然(最)近期值发生。