自定义路线推翻新星路线
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-api
和 nova-vendor
)以及自定义 Nova 路径(backend
)。
routes/web.php
文件如下所示:
Route::get('/seite', 'PageController@anyPage');
还有RouteServiceProvider
中app/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,移动了我的文件并添加了正则表达式,它现在就像一个魅力。
【讨论】:
以上是关于自定义路线推翻新星路线的主要内容,如果未能解决你的问题,请参考以下文章