1

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

我的User模型hasMany配置文件,但我只使用活动配置文件,

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

因此,当用户编辑配置文件时,我将插入到配置文件表中active = 0,并更新我的用户表中的标志“ profile_review_pending = 1

现在我需要的是我需要在 FormRequest 中定义一些规则,比如 if profile_review_pending =1then 不允许编辑。这可以使用存在或类似的东西来完成吗?

4

1 回答 1

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]
    ]);
}
于 2020-03-13T06:45:42.443 回答