Laravel validateForm: предотвращать обновление, когда оно неактивно - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь предотвратить обновление записи, когда функция isActive возвращает false.

Foo. php

// My Class

public function isActive() {
    return false;
}

FooForm. php

// My Form

public function validateForm()
{
    $this->validate($this->request, [
        'field_1'      => 'required',
        'field_2'      => 'required',
        'field_3'      => 'required',
        'isActive' => 'boolean:true'
    ]);
}

Ожидается: блокировка обновления, поскольку isActive возвращает false.

В настоящее время: обновление без проблем.

РЕДАКТИРОВАНИЕ

isActive не может быть свойством базы данных.

1 Ответ

1 голос
/ 08 апреля 2020

Вероятно, вы хотите реализовать пользовательское правило проверки .

Есть несколько способов сделать это в соответствии со связанной документацией. Вот пример использования метода замыкания:

public function validateForm()
{
    $this->validate($this->request, [
        'field_1'      => 'required',
        'field_2'      => 'required',
        'field_3'      => 'required',
        'isActive' => function ($attribute, $value, $fail) {
            if (!$this->isActive()) {
                $fail('isActive is false');
            }
        }
    ]);
}

Если вам нужно связать его с другими правилами валидации, вы также можете поместить замыкание в массив следующим образом:

'isActive' => [
    'required',
    function ($attribute, $value, $fail) {
        if (!$this->isActive()) {
            $fail('isActive is false');
        }
    }]
...