Laravel validateForm:不活动时阻止更新

问题描述 投票:0回答:1

[函数isActive返回false时,我试图阻止记录中的更新。

Foo.php

// My Class

public function isActive() {
    return false;
}

FooForm.php

// My Form

public function validateForm()
{
    $this->validate($this->request, [
        'field_1'      => 'required',
        'field_2'      => 'required',
        'field_3'      => 'required',
        'isActive' => 'boolean:true'
    ]);
}

预期:因为isActive返回false,所以阻止更新。

现在:更新没有任何问题。

编辑

isActive不能是数据库属性。

php laravel laravel-5
1个回答
0
投票

您可能正在寻求实现custom validation rule

根据链接的文档,有几种方法可以做到这一点。这是使用闭包方法的示例:

public function validateForm()
{
    $this->validate($this->request, [
        'field_1'      => 'required',
        'field_2'      => 'required',
        'field_3'      => 'required',
        'isActive' => function ($attribute, $value, $fail) {
            if (!$this->isActive()) {
                $fail('isActive is false');
            }
        }
    ]);
}

如果需要将其与其他验证规则链接在一起,也可以将闭包放入数组中,如下所示:

'isActive' => [
    'required',
    function ($attribute, $value, $fail) {
        if (!$this->isActive()) {
            $fail('isActive is false');
        }
    }]
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.