Laravel 5如何验证至少1个复选框

时间:2017-01-16 05:38:47

标签: php checkbox laravel-5

我需要检查是否至少选中了一个复选框,我是laravel中的新手,所以我不知道如何使用复选框进行操作,已经尝试过仅使用文本字段但是在复选框中不知道'required'=>'required'是否有用。

这是我的代码

<div class="col-md-12" style="border: 1px solid;border-color:#ddd">
    <h5 style="color : #4897D3;">Services Quote for:</h5>
    <div class="col-md-12">
        <div class="row">
            <div class="col-md-4">
                <div class="form-group">
                    <label>
                 <input type="checkbox" name="quote[]" value="CON"> CON - Consulting
                 </label>
                </div>
            </div>
            <div class="col-md-4">
                <div class="form-group">
                    <label>
                 <input type="checkbox" name="quote[]" value="SMM"> SMM - Social Media Marketing
                 </label>
                </div>
            </div>
            <div class="col-md-4">
                <div class="form-group">
                    <label>
                 <input type="checkbox" name="quote[]" value="EVT"> EVT - Virtual Tour New
                 </label>
                </div>
            </div>
        </div>
    </div>

任何人都可以帮助我或建议我将如何做到这一点?

4 个答案:

答案 0 :(得分:0)

尝试使用验证器:

Validator::make( 
[ 'quote' => Input::get('quote') ],
[ 'quote' => 'min:1' ]
);

答案 1 :(得分:0)

怎么样:

if (!empty($request->quote)) {
    // Code to run IF checkboxes are checked
}

这样你可以通过数组操作提取条件中的复选框(因为$request->quote是一个数组)。

答案 2 :(得分:0)

尝试理解这个概念:

<input type="checkbox" name="quote[]" />

这里你创建了多个名为quote的复选框,名称本身就是一个数组,因此它可以接受多个值。

现在在控制器端进行如下检查:

if(isset($request->quote) && count($request->quote) == 0)
{
    // No checkbox is checked
}

if(isset($request->quote) && count($request->quote) == 1)
{
    // 1 checkbox is checked
}

答案 3 :(得分:0)

在laravel中,您可以在请求文件中编写验证规则。

示例:app \ Http \ Requests \ MyFormRequest.php

<?php namespace App\Http\Requests;

    use App\Http\Requests\Request;
    use Illuminate\Support\Facades\Input;
    use Response;
    use Illuminate\Foundation\Http\FormRequest;

 class MyFormRequest 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 [
     'quote' => 'min:1' 
   ];

    }
}

public function messages()
{
    return [
        'quote' => 'Select minimum 1 checkbox'
    ];
}

}

LeadinfoController.php

 <?php namespace App\Http\Controllers;

  use App\Http\Requests\MyFormRequest;

         ......
         ......

  class LeadinfoController extends Controller {

       ......
         ........

       public function multiple_upload(MyFormRequest $request) { 
              $form_data= $request->all();
              .........
              .........
       }

      .........
      .........

}

参考:https://laravel.com/docs/5.3/validation#form-request-validation