Laravel FormRequest验证规则

时间:2020-03-13 06:35:24

标签: laravel eloquent laravel-validation laravel-formrequest

在我的Laravel应用程序中,当有人编辑其个人资料并等待管理员批准时,他们无法再次编辑该个人资料。我需要在编辑用户个人资料时在FormRequest中实现此规则。

我的User模型hasMany个人资料,但我仅使用活动个人资料

public function profile()
{
    return $this->hasMany(Profile::class)->where('active', 1);
}

因此,当用户编辑个人资料时,我将以active = 0的形式插入个人资料表,并更新我的用户表“ profile_review_pending = 1”中的标志

现在我需要在FormRequest中定义一些规则,例如如果profile_review_pending =1则不允许编辑。可以使用存在或类似方式完成此操作吗?

1 个答案:

答案 0 :(得分:1)

您需要定义一个自定义验证规则, 实现Illuminate\Contracts\Validation\Rule接口或使用闭包。然后,直接在验证器中使用自定义规则。

use Illuminate\Contracts\Validation\Rule;

class ReviewPendingValidationRule implements Rule
{
    public function passes($attribute, $value)
    {
        return $value == 1;
    }

    public function message()
    {
        return ':Review is pending';
    }
}

在您的控制器中

public function store()
{
    $this->validate(request(), [
        'profile_review_pending' => [new ReviewPendingValidationRule]
    ]);
}