【问题标题】:Laravel 5 How to validate atleast 1 checkboxLaravel 5 如何验证至少 1 个复选框
【发布时间】:2017-05-30 22:03:21
【问题描述】:

我需要检查是否至少选中了 1 个复选框,我是 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>

谁能帮助我或建议我该怎么做?

【问题讨论】:

    标签: php checkbox laravel-5


    【解决方案1】:

    尝试使用验证器:

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

    【讨论】:

      【解决方案2】:

      怎么样:

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

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

      【讨论】:

        【解决方案3】:

        尝试理解这个概念:

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

        【讨论】:

        • 在我的控制器中我放了这个,$quote = implode(",", Input::get('quote', []));我将如何使用您的代码?抱歉还是新手。
        • 你想用代码做什么?我可以告诉你一些简单的方法
        • 此代码将在 $quote 中的复选框中选中的所有值存储在数据库的单个列中。你对如何做有什么建议?我只是想验证他们是否需要检查至少 1 个复选框才能提交表单。
        • 试试这个:$quote = implode(",", Input::get('quote');
        【解决方案4】:

        在 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

        【讨论】:

        • 尝试在我的 request.php 中复制代码,但它仍然没有验证复选框。即使没有选中至少一个复选框,它也会提交表单。
        • 请不要照原样复制代码。您必须参考教程并编写新的@Ace
        • 为了应用这个请求/验证,你必须编写你的控制器函数,比如: public function myfunction(MyFormRequest $request){ $form_data= $request->all(); }
        • 公共函数multiple_upload() { $quote = implode(",", Input::get('quote', [])); $userId = Auth::user()->id; $user = 新的线索信息; $user->quote = $quote; $用户->保存(); Session::flash('成功', '上传成功');返回重定向::to('home');
        • 控制器名称? @王牌
        猜你喜欢
        • 2013-04-25
        • 2014-07-15
        • 1970-01-01
        • 2017-07-27
        • 2011-03-13
        • 2015-11-06
        • 2017-09-09
        • 2016-09-11
        • 2016-01-15
        相关资源
        最近更新 更多