即使与可为空的规则结合使用,现有规则也无法处理空值

时间:2019-01-16 16:19:31

标签: laravel laravel-5

我在当前项目中使用Laravel 5.6。在Request对象的规则中,我具有以下规则功能:

public function rules()
{
    if ($this->input('preset') === self::NO_PRESET) {
        $this->merge(['preset' => null]);
    }
    return [
        'preset' => 'nullable|exists:roles_presets,id',
        ...
    ];
}

但是,当'preset'为null时,exists:roles_presets,id的规则仍然失败。

因为该字段为空并且nullable规则允许该值,所以不应该达到它吗?

1 个答案:

答案 0 :(得分:1)

不要将合并放在rules函数中,而是要覆盖validationData并在其中添加逻辑。

public function validationData()
{
    if ($this->input('preset') === self::NO_PRESET) {
        $this->merge(['preset' => null]);
    }

    // returns $this->all();
    return parent::validationData();
}