У меня не получается разрешить пользователям переопределять маршруты моих пакетов. Поскольку пакет обнаруживается автоматически, я не могу выполнить обычное исправление для этого.
Желаемый результат: если в routes-> web.php пользователь определяет маршрут '/ home', а в файле routes.php моего пакета у меня также есть '/ home', используется версия web.php.
Дайте мне знать, какой еще код мне нужно посмотреть, чтобы решить эту проблему!
Поставщик услуг пакета:
no longer relevant
Решение:
Чтобы решить эту проблему так, как я задумал (без нарушения автообнаружения), вам нужно будет проверить другие маршруты в маршруте, который обычно переопределяет пользовательские маршруты. Например, эта функция, которая имеет маршрут '/ {slug}', обычно нарушает пользовательские маршруты web.php, такие как '/ userroute'.
Мой обходной путь выглядит так.
public function page($slug){
$route = $slug;
$routes = Route::getRoutes();
foreach($routes as $r){
if($r->uri() == $route){
$name = $r->getActionName();
if(isset($name)){
return \App::call('\\'.$name);
}
}
}
//add route code after
Нам нужно вызвать маршрут напрямую, чтобы предотвратить бесконечное перенаправление. Это хорошо работает для меня, потому что я могу контролировать, какие маршруты пакетов пользователь может переопределить в своем файле web.php, однако я уверен, что должен быть более быстрый способ добиться всего этого.
dont-discover
, но люди, устанавливающие ваш пакет, должны использоватьdont-discover
в основномcomposer.json
своего проекта: stackoverflow.com/questions/50219976/ 15.03.2019