【问题标题】:Custom Route overruling Nova route自定义路线推翻新星路线
【发布时间】:2019-06-29 04:13:01
【问题描述】:

我有一个问题,我似乎无法解决使用 Nova 作为编辑网站后端的问题。我通过完美的配置将路径从 /nova 重命名为 /backend。

现在我的前端需要一个非常通用的路由结构,因为大部分逻辑都放在控制器中,为用户提供了一些额外的灵活性。

一旦我将这些路由添加到我的网络路由,后端就会进入 404。显然,我的第二条规则与 /backend 匹配,并且由于我的数据库中没有该名称的页面,所以它失败了。

如何确保 Nova 的路由首先被解析,或者 /backend 请求被我的路由忽略?

Laravel v5.7。尝试了通常的技巧 - php artisan config:clear, php artisan route:clear - 以及向路由添加正则表达式:

->where('seite', '^(?!backend).*$');

当前网络路由文件:

Route::get('/', 'PagesController@frontPage');
Route::get('/{seite}/{zweit?}/{dritt?}', 'PagesController@anyPage');

/backend 应该由 Nova 处理,而不是我的自定义路由。

【问题讨论】:

  • 你能分享你的config/app.php吗?

标签: laravel laravel-routing laravel-nova


【解决方案1】:

我在路由文件中遇到了与通用 slug 类似的问题。我设法将 slug 的模式限制为字母数字字符(包括破折号、连字符和斜杠*),但排除了 Nova 路由(nova-apinova-vendor)以及自定义 Nova 路径(backend)。

routes/web.php 文件如下所示:

Route::get('/{seite}', 'PageController@anyPage');

还有RouteServiceProviderapp/Providers/RouteServiceProvider.php中的模式:

public function boot()
{
    Route::pattern('seite', '^(?!backend|nova-api|nova-vendor).[a-zA-Z0-9-_\/]+$');

    parent::boot();
}

*) 请注意,这种模式也允许像上面的问题中所示的 /seite/zweit/drei 这样的 slug。

【讨论】:

    【解决方案2】:

    所以最后是这个成功了:

    ->where('seite', '^(?!backend).*$');
    

    在我之前尝试让它工作时,我一定是破坏了其他东西。我在 Nova 中重新安装了 Laravel,移动了我的文件并添加了正则表达式,它现在就像一个魅力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-17
      • 2020-09-13
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      相关资源
      最近更新 更多