Laravel проверка 2 разных значений в одном поле - PullRequest
0 голосов
/ 12 января 2020

У меня есть форма, которая будет иметь поле, которое вводит 2 разных значения в одном поле.

Первое поле состоит из выпадающего списка выбора. Как только вы выбрали опцию из первого поля, значение из первого поля будет напечатано в поле ввода. Затем в поле ввода необходимо добавить или ввести вручную другое значение, чтобы оно работало. Таким образом, результат будет выглядеть следующим образом:

Selected value - Value added manually

Так что моя проблема в том, как проверить поле, если каждое из них пустое.

Я понятия не имею, что я делаю, но это то, что я пробовал до сих пор, но это не работает.

'field' => 'required|in:' . implode(",", Model::values()) . '|unique:table'

Это должен быть ожидаемый результат:

  • Если значение поля равно Selected value - Value added manually, это действительно.

  • Если значение поля Selected value -, оно должно подтвердить ввод 2-го значения.

  • Если значение поля - Value added manually, оно должно подтвердить ввод 1-го значения.

Я искал в Google, но не уверен, по каким ключевым словам я должен искать, кроме моего названия подводит итоги того, что я искал недавно, но я не нашел такой же проблемы, как у себя, но если есть, пожалуйста, свяжите ее с благодарностью.

1 Ответ

0 голосов
/ 15 января 2020

Я бы предложил использовать два отдельных входа: A select для «выбранного значения» и input для «Добавленной стоимости вручную». Это упростит правила:

'field1' => 'required|in:' . implode(",", Model::values()),
'field2' => 'required',

Но так как у вас в настоящее время есть правило проверки unique, я подозреваю, что это причина, по которой вы используете его как одно поле. В этом случае вы можете создать несколько пользовательских правил проверки .

Проверка первого значения существует:

return false !== strpos($value, '-') && strlen(trim(explode('-', $value)[0])) > 0;

Проверка первого значения допустимо:

return in_array($value, Model::values());

Проверка второго значения существует:

return false !== strpos($value, '-') && strlen(trim(explode('-', $value)[1])) > 0;

Затем вы можете добавить эти правила в цепочку:

'field' => ['required', new FirstValueExists, new FirstValueValid, new SecondValueExists, 'unique:table'],

Причина, по которой у меня есть два правила для первого значения, состоит в том, чтобы разрешить более конкретные c сообщения об ошибках («Значение 1 отсутствует» и «Значение 1 недействительно»). Если вас это не волнует, вы можете объединить их в одно правило.

Обратите внимание, что я на самом деле не проверял это, но оно должно работать.

...