Правило проверки 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
тогда не разрешайте редактирование. Можно ли это сделать с помощью exists или чего-то подобного?
1 ответ
Вам необходимо определить настраиваемое правило проверки, реализовать Illuminate\Contracts\Validation\Rule
интерфейс или используйте Closure. Затем настраиваемое правило используется непосредственно в валидаторе.
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]
]);
}