Laravel:从单选按钮获取和合并值

问题描述

我目前正在进行某种“测验”,以根据用户给出的答案获得用户的入门级课程。基本上是个性测试。

这是我的表格的一个例子

<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;
    }
}

我的帖子正确地从输入中获取了值,我只需要知道如何将它们获得一个最终的分数并将其存储到数据库

我尝试使用JavaScript,但是我无法弄清楚如何将结果保存到控制器中以存储在数据库中。

解决方法

好吧,您可以尝试将单选输入命名为数组,这样一来便可以检索值:

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


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

然后在Controller中,您可以将所有值放入单个数组中

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

然后,您可以很容易地获得总和:

$sum = array_sum($values);

您可能需要进行一些验证,以确保在特定值范围内获得正确数量的输入。