首页 > 解决方案 > 如何在不重定向无效输入的情况下使用 FormRequest 进行验证?

问题描述

我正在使用可以通过查询参数设置的几个过滤器的表视图,我想使用FormRequest- 在这种情况下验证给定的输入ExplorerRequest

一种控制器方法的当前实现如下所示:

public function show(ExplorerRequest $request) : Response
{
    $neo4j  = new Neo4JService();

    // Here I would like to perform some neo4j queries depending on the validated input

    return Inertia::render('Explorer', [
        'filters' => $request->validated(), // to display filter-state in frontend
        'nodes'   => $neo4j->getNodes()     // filtered nodes by request input
    ]);
}

在 中ExplorerRequest,我定义了一些示例规则:

public function rules()
{
    return [
        'status'  => ['numeric'],
        'sortBy'  => ['string'],
    ];
}

这个想法是跳过一个参数,如果它是无效的。因此,例如,当用户手动将 url 从更改url.com?status=404url.com?status=error过滤器时,将被跳过,因为它不再有效。

我的问题是,当规则失败时,验证器将重定向回最后一个 URL,但我想允许请求通过,无论它们是否有效,我只想$request->validated()稍后使用该数组。

protected function failedValidation我尝试通过不在那里抛出错误来覆盖并避免重定向,但请求仍然在无效输入上重定向。任何想法如何让请求通过,或者您会选择不同的方法从给定的查询字符串中提取有效参数吗?

标签: laravel

解决方案


推荐阅读