【发布时间】:2019-02-16 12:23:56
【问题描述】:
我无法让用户覆盖我的包裹路线。因为包是自动发现的,所以我无法为此执行usual fix。
想要的结果是,如果用户在 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功能并指导其他开发人员在App\Providers\RouteServiceProvider之后手动添加我的服务提供商。谢谢。 -
问题已更新!我希望它会有所帮助。