自定义路线推翻新星路线

Posted

技术标签:

【中文标题】自定义路线推翻新星路线【英文标题】: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吗? 【参考方案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,移动了我的文件并添加了正则表达式,它现在就像一个魅力。

【讨论】:

以上是关于自定义路线推翻新星路线的主要内容,如果未能解决你的问题,请参考以下文章

[地图Map] 百度地图api 自定义路线的道路匹配问题

Rails 6 路线 - 如何添加自定义“新”路线?

标记之间的 Google Maps API 和自定义折线路线

php 重力形式的自定义路线通知

csharp 自定义路线

Rails 3 - 自定义资源丰富的路线