Правило проверки 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]
    ]);
}
Другие вопросы по тегам