2016-01-26 4 views
2

У меня есть домашнее приложение Laravel 5.1, поверх которого я создаю конкретные приложения. Базовое приложение использует именованный маршрут для входа в систему, который, естественно, называется «login», который прослушивает GET/login.Laravel 5.1 - Перегруженные маршруты

В одном из моих конкретных приложений я попытался перегрузить этот маршрут для отправки запросов другому контроллеру. Кажется, он работал некоторое время, но затем он снова начал переходить к контроллеру базового приложения. Я уверен, что я что-то изменил, чтобы сломать его, но проблема в том, что я не могу понять, как это исправить.

Мои базовые маршруты приложений определены в приложении/Http/Routes/core.php. Соответствующий маршрут:

Route::get('login', [ 
    'as' => 'login', 
    'uses' => '\MyVendor\Core\Http\Controllers\[email protected]' 
]); 

Мои конкретные маршруты программы определяются в приложении/HTTP/Маршруты/app1.php. Соответствующий маршрут:

Route::get('login', [ 
    'as' => 'login', 
    'uses' => 'App1\[email protected]' 
]); 

App2 и App3 определены аналогичным образом. Мое приложение/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\[email protected], а не App1\[email protected].

EDIT: Я изменил описание проблемы, так как неправильно описывал ее как проблему с вызовами route('login').

ответ

1

Индекс маршрутов в Ларавеле следует за форматом "$domain$uri", поэтому маршруты с доменом не будут перезаписывать их без. После группы домена должен быть объявлен резервный маршрут без домена, поэтому он будет позже в коллекции маршрутов и не будет соответствовать перед маршрутом с подходящим доменом.

+0

Спасибо. Я не видел никакой документации по индексированию «$ domain $ uri». Если он там, я, должно быть, прочитал это прямо мимо него. – Trip

+1

Если это полезно, вы можете найти его в источнике [здесь] (https://github.com/laravel/framework/blob/5.2/src/Illuminate/Routing/RouteCollection.php#L67) – tjbp

+0

Это будет мой следующий шаг, но я решил, что смогу передать этот вопрос на аутсорсинг, пока я продолжаю работать над другими аспектами моего проекта. Еще раз спасибо! – Trip

0

«самое последнее определение маршрута является эффективным способом»

Это не ошибка, это ожидаемое поведение, простой пример будет установив переменную value 1 затем установить его в value 2, из Конечно, последнее (последнее) значение имеет место.

+0

Я имел в виду поведение, при котором маршрут, определенный вне блока домена, может быть * не * перегружен внутри блока домена. – Trip

Смежные вопросы