Как мне требовать проверки одного из трех значений при проверке Laravel? - PullRequest
0 голосов
/ 03 октября 2018

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

enter image description here

Полный список здесь:

enter image description here

Я использую section_id для группировки их в столбцы / строки.И вот код для ввода:

    <div class="checkbox c-checkbox">
          <label>
            <input class="{{ $screen->section->slug }}"
                   type="checkbox"
                   value="{{ $screen->id }}"
                   name="screens[]"{{
              isset($selected) && in_array($screen->id, $selected)
              ? ' checked'
              : ''
            }}><span class="fa fa-check"></span>{{ $screen->name }}
          </label>
        </div>

Пока все хорошо.

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

Как я могу это проверить?

У меня есть файл EventRequest, который обрабатывает все мои проверки, и я думал что-то вроде:

'screens.*' => 'nullable|integer|exists:screens,id|max:255|required_without_all:5,6,7',

Этот код не работает, но я надеюсь, что это ясно объясняет, что мне нужно убедиться, что один из этих 3 идентификаторов отмечен.Или мне нужно требовать, чтобы в массиве присутствовал хотя бы один элемент из section_id два.Мысли о том, как это сделать?

public function rules(Request $request) : array
{
    return [
        ...
        'screens.*' => 'nullable|integer|exists:screens,id|max:255',
        ...
    ];

1 Ответ

0 голосов
/ 03 октября 2018

Вы пытались создать собственное правило проверки?

Документация: https://laravel.com/docs/5.7/validation#custom-validation-rules

Вот пример класса валидатора из валидатора кода верификации, который я однажды сделал.$validator имеет доступ к остальным данным формы.

Я зарегистрировал их у поставщика услуг, используя Validator::extend()

<?php

namespace App\Auth\Validators;


use App\PendingUserActivation;


/**
 * Class ActivationTokenExists
 *
 * @package \App\Auth\Rules
 */
class VerificationCodeValidator implements ValidatorInterface
{



public function passes($attribute, $value, $parameters, $validator)
{

    $verification_code = $validator->getData()['verification_code'];
    $token = $validator->getData()['token'];
    return $this->verify($token, $verification_code);
}

/**
 * @param $userToken
 * @param $verification_code
 * @return bool
 */
public function verify($userToken, $verification_code)
{
    $passes = PendingUserActivation::where('token', $userToken)
        ->where('verification_code', $verification_code)
        ->exists();

    return $passes;
}


/** @return string */
public static function getMessage()
{
    return 'We were unable to activate an account using the :attribute provided. Please try again.';
}

/** @return string */
public static function getName()
{
   return 'verification_code_valid';
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...