Laravel Правило проверки FormRequest - PullRequest
1 голос
/ 13 марта 2020

В моем приложении 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 Ответ

1 голос
/ 13 марта 2020

Вам необходимо определить пользовательское правило проверки, реализовать интерфейс 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]
    ]);
}
...