自定义路线否决新星路线

时间:2019-02-05 10:52:47

标签: laravel laravel-routing laravel-nova

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

现在我的前端需要非常通用的路由结构,因为大多数逻辑都放置在控制器中,从而为用户提供了更多的灵活性。

将这些路由添加到Web路由后,后端将转到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');

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

2 个答案:

答案 0 :(得分:0)

我的路由文件中的通用子弹也有类似的问题。我设法将子弹的模式限制为字母数字字符(包括破折号,连字符和斜杠*),但排除了Nova路由(nova-apinova-vendor)以及自定义的Nova路径({ {1}}。

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(); } 之类的弹头。

答案 1 :(得分:0)

所以最终是这样的:

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

在我先前尝试使其工作时,我必须破坏了其他东西。我在Nova中完成了Laravel的重新安装,将其移到文件上并添加了regex,现在它就像一个魅力。