在 Laravel 的 FormRequest 中使用复杂的条件验证规则

2024-03-16

我正在使用 Laravel 开发一个 Web 应用程序。我现在正在做的是创建一个 FirmRequest 来进行验证。

这是我的表格请求。

use Illuminate\Foundation\Http\FormRequest;

class StoreVacancy extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'title' => 'required',
            'type' => 'required',
            'complex_field' => ...need complex conditional validation based on the type field
        ];
    }
}

如果我没有使用 FormRequest,我可以在控制器中创建验证器并设置复杂的条件验证规则,如下所示。

$v = Validator::make($data, [
    //fields and rules
]);

$v->sometimes('reason', 'required|max:500', function ($input) {
    return $input->games >= 100;
});

但问题是我没有在控制器中创建验证器。但我正在使用 FormRequest。如何在 FormRequest 中实现同样的效果?


您可以根据输入数据手动调整规则:

class StoreVacancy extends FormRequest
{
    public function rules()
    {
        $reason = $this->request->get('reason'); // Get the input value
        $rules = [
            'title' => 'required',
            'type'  => 'required',
        ];

        // Check condition to apply proper rules
        if ($reason >= 100) {
            $rules['complex_field'] = 'required|max:500';
        }

        return $rules;
    }
}

它不一样有时,但它做同样的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Laravel 的 FormRequest 中使用复杂的条件验证规则 的相关文章

随机推荐