Laravel 5.6: пропустить этап проверки, если поле существует и не изменено.Если поле IS изменено, оно обязательно, но не уникально - PullRequest
0 голосов
/ 01 марта 2019

У меня есть ситуация, когда администратор редактирует форму сотрудника: имя, фамилия и SSN требуются при ДОБАВЛЕНИИ сотрудника.Там нет проблем.Где у меня есть проблема при редактировании формы.У меня нет проблем с проверкой SSN, так как это уникальное поле.

'ssn_edit' => 'required|unique:employees,ssn,' . $id

Но у меня действительно есть проблема с неуникальными полями.Я не знаю, как установить проверку пропустить по идентификатору, когда поле НЕ является уникальным.Вот полный раздел правил FormRequest:

public function rules()
{
    $id = $this->input('employee_id');
    return [
        'first_name' => 'required',
        'last_name' => 'required',
        'ssn_edit' => 'required|unique:employees,ssn,' . $id
    ];
}

Очевидно - это вызывает ошибку проверки для first_name и last_name независимо от того, заполнено ли поле или нет.Буду очень признателен за любую помощь, которую некоторые из вас, гуру Ларавела, могут мне помочь!

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Существует так много трюков, которые вы можете сделать, чтобы решить проблему.Но у меня есть только два способа ..

Первый: Запретить отправку значения ssn_edit, когда вы хотите отредактировать сотрудника

пример:

<input type="text" value="{{ isset($employee) ? $employee->ssn_edit : old('ssn_edit') }}" @isset($employee) disabled @endisset name="ssn_edit">

public function rules()
{
    $id = $this->input('employee_id');
    return [
        'first_name' => 'required',
        'last_name' => 'required',
        'ssn_edit' => 'required|sometimes|unique:employees,ssn,' . $id
    ];
}

Второйis: Проверьте ваш метод перед проверкой сотрудника .. это POST или PUT, если это PUT, не добавляйте уникальное правило в вашу проверку.

Вывод: проверка будет работать каждый раз, когда вы вызываете проверку, независимо от того, редактируете ли вы или добавляете нового сотрудника.# CMIIW

0 голосов
/ 01 марта 2019

У вас не должно быть ошибок при проверке неуникальных полей, возможно, у вас неправильная форма редактирования, установите атрибут value для ввода, например

<input type="text" value="{{ $employee->first_name }}" name="first_name">
...