如何验证单选按钮/复选框,必须在laravel中选择一个

时间:2015-06-03 15:49:26

标签: php validation laravel radio-button

我正在尝试验证Laravel中的单选按钮。这是我的代码,但它不起作用。

在我的情况下,我有一个动态表单,其中包含许多不同类型的问题,例如:收音机,支票簿,单输入,数字输入......所以我必须使用数组名称每种类型的问题。例如:name =“radio ['。$ k。']”。

在我的控制器中,我进行验证,$ key是初始形式的$ k值。

public function rules()
{
 $rules = [];
if (Input::has('radio')) {
    foreach (Input::get('radio') as $key => $val) {
        $rules['radio.' . $key] = 'required';
    }
 }
if (Input::has('singleinput')) {
            foreach (Input::get('singleinput') as $key => $val) {
                $rules['singleinput.'.$key] = 'required|max:10';
                }
            }

}

 public function messages()
    {
        $messages = [];

        if (Input::has('radio')) {
      // some code here;
         }
     }

public function answer_store($survey_id, $patient_id)
    {
        $rule = $this->rules();
        $message = $this->messages();
        $validator = Validator::make(Input::all(), $rule, $message);
}

在视图中:

<input type="radio" name="radio['.$k.']" value="'.$str1.'">'.$answer->answer_body

我的代码使用文本输入类型,但不支持radio&amp;复选框。 有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

好的没有回复,如果您使用的是Laravel 5,这是我的答案。

Laravel 5在您提交表单时使用请求。您可以在执行控制器之前对该数据执行验证。

首先使用您的终端运行工匠命令

php artisan make:request MyRequest

这将在App \ Http \ Requests中创建一个文件。

将其放入新的请求文件

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;

class MyRequest extends Request {

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'myRadios' => 'required'
        ];
    }

}

在您看来,请使用以下无线电,确保您想要的无线电组具有相同的名称。

<input type="radio" name="myRadios" value="1"> Number 1
<input type="radio" name="myRadios" value="2"> Number 2
<input type="radio" name="myRadios" value="3"> Number 3

在Controller中,您需要引用请求文件并使用依赖注入将其放入您的函数中。

如果要使用所选收音机的值,请使用$ request数组

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;
use App\Http\Requests\MyRequest;

class MyController extends Controller {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function myFormFunction(MyRequest $request)
    {
        //Get the value of the radio selected
        $myVariable = $request['myRadios'];
    }

}

?>

答案 1 :(得分:1)

一天之后,我找到了解决问题的方法。

  

在规则代码中使用if(Input :: has('radio')){}。因为如果我   不要选择任何东西,没有任何相关信息   验证

对于我使用的一系列广播问题:

<input type="radio" name="radio['.$count_radio.']" value="'.$str1.'">

我的问题是我不知道每种形式有多少无线电问题。我有很多不同的形式。我将在View文件中计算无线电形式的数量并传递给Controll($ count_radio)。

在控制器中,我制定如下规则:

for ($key = 1; $key <= $count_radio; $key++) {
            $rules['radio.' . $key] = 'required';
        }

我还在View中添加了此代码的错误:

       if($errors->has('radio.'.$count_radio.'')) {
            echo $errors->first('radio.'.$count_radio.'');
       }

就是这样。

答案 2 :(得分:0)

您的输入标记以</label>结尾。 不确定这是否有帮助。