自定义路线否决 Nova 路线
Custom Route overruling Nova route
我有一个问题,我似乎无法解决使用 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 处理,而不是我的自定义路由。
我的路由文件中的通用 slug 也有类似的问题。我设法将 slugs 的模式限制为字母数字字符(包括破折号、连字符和斜杠*),但排除了 Nova 路由(nova-api
和 nova-vendor
)以及自定义 Nova 路径(backend
).
这是 routes/web.php
文件的样子:
Route::get('/{seite}', 'PageController@anyPage');
以及 app/Providers/RouteServiceProvider.php
中 RouteServiceProvider
中的模式:
public function boot()
{
Route::pattern('seite', '^(?!backend|nova-api|nova-vendor).[a-zA-Z0-9-_\/]+$');
parent::boot();
}
*) 请注意,此模式还允许像上面问题中显示的 /seite/zweit/drei
这样的 slug。
所以最后是这个成功了:
->where('seite', '^(?!backend).*$');
在我之前尝试让它工作的过程中,我一定是弄坏了其他东西。我在 Nova 中彻底重新安装了 Laravel,移动了我的文件并添加了正则表达式,现在它就像一个魅力。
我有一个问题,我似乎无法解决使用 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 处理,而不是我的自定义路由。
我的路由文件中的通用 slug 也有类似的问题。我设法将 slugs 的模式限制为字母数字字符(包括破折号、连字符和斜杠*),但排除了 Nova 路由(nova-api
和 nova-vendor
)以及自定义 Nova 路径(backend
).
这是 routes/web.php
文件的样子:
Route::get('/{seite}', 'PageController@anyPage');
以及 app/Providers/RouteServiceProvider.php
中 RouteServiceProvider
中的模式:
public function boot()
{
Route::pattern('seite', '^(?!backend|nova-api|nova-vendor).[a-zA-Z0-9-_\/]+$');
parent::boot();
}
*) 请注意,此模式还允许像上面问题中显示的 /seite/zweit/drei
这样的 slug。
所以最后是这个成功了:
->where('seite', '^(?!backend).*$');
在我之前尝试让它工作的过程中,我一定是弄坏了其他东西。我在 Nova 中彻底重新安装了 Laravel,移动了我的文件并添加了正则表达式,现在它就像一个魅力。