проверка в Laravel - PullRequest
       7

проверка в Laravel

0 голосов
/ 11 декабря 2018

Я делаю проверку для форм.У меня есть ввод для текста вопроса и 4 формы ввода для 4 ответов с переключателями и ввод числа для точек.

Если я проверю эти формы, пользователь должен будет создать 4 ответа в БД, но что, если пользователь будетхранить только 3?Как проверить таким образом?Теперь он показывает ошибку, что поля обязательны для заполнения, если я пытаюсь сохранить 3 ответа.

Моя проверка

    public function store(Test $test, Request $request)
        {
           $this->validate($request, [
                'text' => 'required',
                'point' => 'required',
                'correct' => 'required'

            ]);

        $question = new Question();

        if($request->has('picture')) {
        $question->picture = $request->file('picture')->get();
    }
        $question->text = $request->input('text');
        $question->test_id = $test->id;
        $question->save();

        foreach ($request->input('answer') as $_index => $_answer)
        {
            if ( $_answer['text'] ) {
                $answer = new Answer();
                $answer->text = $_answer['text'];
                $answer->point = $_answer['point'];

                $answer->correct = ($request->input('correctanswer') == $_index) ? 1 : 0;

                $answer->question_id = $question->id;

                $answer->save();

            }
    }

Клинок

  {!! Form::open(['route' =>
                      ['question.store', $test->id],
                       'class' => 'form',
                       'method' => 'post',
                       'enctype' => 'multipart/form-data'

                                 ]
                               ) !!}


                            <div class="form-group">
                                {!! Form::label('text', 'Question text') !!}
                                {!! Form::text('text', '', ['class' => 'form-control', 'placeholder' => '', 'required' => 'required'] ) !!}
                            </div>

                           <div class="form-group">
                            {!! Form::label('picture', 'picture') !!}
                            {!! Form::file('picture', ['class' => 'form-control']) !!}
                          </div>
                            <?php

                            for($answers_counter = 0; $answers_counter < 4; $answers_counter++) {
                            ?>
                            <div class="input-group">
                                <div class="input-group-prepend">
                                    <span class="input-group-text">Answer{{ $answers_counter + 1 }}</span>
                                    <div class="input-group-text">
                                        <input type="radio" name="correctanswer" id="answer[{{ $answers_counter }}]" value="{{ $answers_counter }}" placeholder="Answer{{ $answers_counter + 1 }}">
                                    </div>
                                </div>

                                {!! Form::text('answer[' . $answers_counter . '][text]', '', ['class' => 'form-control']) !!}
                                <div class="input-group mb-3">
                                    <div class="input-group-prepend">
                                        <span class="input-group-text" id="basic-addon1">Points</span>
                                    </div>
                                    {!! Form::number('answer[' . $answers_counter . '][point]', '', ['class' => 'form-control']) !!}

                                </div>

                            </div>
                            <?php
                            }
                            ?>

Может ли кто-нибудь помочь мне, пожалуйста?Спасибо!

1 Ответ

0 голосов
/ 11 декабря 2018

Если вы отключите строгий режим, тогда sql должен принимать пустой ввод, но это просто обходной путь. Когда вы вставляете это в верхнюю часть вашего Model:

protected static $strictMode = false;
...