Проверка массивов Laravel с использованием правила IN - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь проверить значения формы множественного выбора, используя правило проверки IN.Я продолжаю получать сообщение об ошибке, что мое значение неверно, несмотря на то, что он идентичен одному из параметров в списке.Я думаю, что это должен быть способ, которым я идентифицирую имя в валидаторе («шаг1»).Однако я также использовал step1. , step1.0. , step1 *.Он будет продолжать выдавать ответ «Неверный ответ», который соответствует ошибке IN.

Контроллер

public function postQuestionDetailsStep1(Request $request)
{
    if ($request->ajax())
    {
        $step1 = $request->input('step1');

        $this->validate($request, [
            'step1' => 'required',
            'step1.0' => 'in:Less than $50,000,$50,000-$100,000,More than $100,000',
        ], [
            'step1.required' => 'You must choose one.',
            'step1.in' => 'Invalid response.',
        ]);
    }
}

Просмотр

<input type="checkbox" class="custom-control-input" id="step1-option1" name="step1[]" value="Less than $50,000">
<input type="checkbox" class="custom-control-input" id="step1-option2" name="step1[]" value="$50,000-$100,000">
<input type="checkbox" class="custom-control-input" id="step1-option3" name="step1[]" value="More than $100,000">

Javascript

$('#step-1').submit(function(e) {
    e.preventDefault();

    var step1 = [];

    $("input[name='step1[]']:checked").each(function() {            
        step1.push($(this).val());
    });

    $.ajax({
        type: "POST",
        url: "/question/details/1",
        data: {step1:step1},
        error: function(data){
        },
        success: function(data) {
            console.log(data);
        }
    });
});

1 Ответ

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

Запятая в вашем правиле in, запутайте массив, который вы пытаетесь создать.Laravel будет читать ваш массив следующим образом:

['Less than $50', '000', '$50', '000-$100', '000', 'More than $100', '000']

Вы можете изменить правило на следующее, чтобы решить проблему с запятой:

in:Less than $50,000,$50,000-$100,000,More than $100,000'

до

Rule::in(['Less than $50,000', '$50,000-$100,000', 'More than $100,000']);

Убедитесь, что use Rule класс:

use Illuminate\Validation\Rule;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...