在我的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
则不允许编辑。可以使用存在或类似方式完成此操作吗?
答案 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]
]);
}