gpt4 book ai didi

laravel - 覆盖 laravel 5.7 自动发现的包路由

转载 作者:行者123 更新时间:2023-12-02 13:20:25 24 4
gpt4 key购买 nike

我在允许用户覆盖我的包裹路线时遇到问题。因为该包是自动发现的,所以我无法执行 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节点添加到您的composer.json文件中,以从自动发现中排除包。

"extra": {
"laravel": {
"providers": [
"WindfallInc\\Woodpecker\\WoodpeckerServiceProvider"
],
"dont-discover": [
"windfallinc/woodpecker"
]
}
}

Taylor 在 Medium 上添加自动发现功能时谈到了这个功能。 https://medium.com/@taylorotwell/package-auto-discovery-in-laravel-5-5-ea9e3ab20518

关于laravel - 覆盖 laravel 5.7 自动发现的包路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52285378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com