Laravel: получение и объединение значений с помощью переключателя

#laravel #radio-button #laravel-5.8

#laravel #переключатель #laravel-5.8

Вопрос:

В настоящее время я провожу своего рода «тест», чтобы получить начальный класс пользователя на основе заданных им ответов. По сути, личностный тест.

Вот пример моих форм

 <div class="form-group">
            <h4>{{Form::label('title', 'Favourite season?')}}<br></h4>
            <div class="container">
                <div class="option">
                    Spring - {{Form::radio('q4', 1, false)}}<br>
                    Summer - {{Form::radio('q4', 2, false)}}<br>
                    Autumn - {{Form::radio('q4', 3, false)}}<br>
                    Winter - {{Form::radio('q4', 4, false)}}
                </div>
            </div>
        </div>
  

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

 public function store(Request $request)
    {
        $this->validate($request, [
            'q1' => 'required',
            'q2' => 'required',
            'q3' => 'required',
            'q4' => 'required',
            'q5' => 'required',
            'q6' => 'required',
            'q7' => 'required',
            'q8' => 'required',
            'q9' => 'required',
            'q10' => 'required',
        ]);

        return $request;
    }
}
  

Мой post правильно получает значения из входных данных, мне просто нужно знать, как я могу получить из них один окончательный результат и сохранить его в базе данных

Я пытался использовать JavaScript, однако я не могу понять, как передать результат в контроллер для сохранения в базе данных.

Комментарии:

1. что вы подразумеваете под получением одного итогового результата?

Ответ №1:

Ну, вы могли бы попробовать присвоить вашим радиовходам имена в виде массива, чтобы затем вы могли извлекать значения одним выстрелом:

 {{ Form::radio('q[3]', 1, false) }}
{{ Form::radio('q[3]', 2, false) }}
...


{{ Form::radio('q[4]', 1, false) }}
{{ Form::radio('q[4]', 2, false) }}
...
  

Затем в вашем контроллере вы можете получить все значения в один массив:

 $values = $request->input('q', []);
  

Тогда вы можете получить сумму этого довольно легко:

 $sum = array_sum($values);
  

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