如何验证laravel 5.4单选按钮?

时间:2017-03-01 13:16:23

标签: php forms laravel validation radio-button

这是我的单选按钮代码

<div class="radio">
  <label><input type="radio" name="gander" value="male">male </label>
  <label><input type="radio" name="gander" value="female">female</label>
</div>

我的控制器代码是

   //validate this form
    $this->validate(request(),[

         'title' => 'required',
         'body'  => 'required',
         'gander'=> 'in:male,female' 

        ]);


    $post = new Post;

    $post->title = $request['title'];
    $post->body  = $request['body'];
    $post->status= $request['status'];
    $post->male  = $request['male'];
    $post->female= $request['female'];

    $post->save();

    //And then redirect to the home
    return redirect('blog');
}

当我提交此表单时,它会显示此错误  SQLSTATE [23000]:完整性约束违规:1048列'male'不能为空(SQL:插入posts titlebodystatus,{{1} },malefemaleupdated_at)值(sdf,sdfsfsd,0 ,, 2017-03-01 13:09:54,2017-03-01 13:09: 54))

这意味着数据库字段需要两个单选按钮数据。在我的桌子上有这些字段'标题','正文','状态','男性','女性''created_at'&amp; 'updated_at'

我的问题是如何验证单选按钮&amp;如何使用单选按钮值插入数据?感谢。

5 个答案:

答案 0 :(得分:5)

如果性别是必填字段,那么您还应该将所需的验证传递给gander属性,如下所示

'gander'=> 'required|in:male,female' 

如果它不是require字段,那么在数据库表中使男性列为nullables。

并且您的表格设计中也存在问题,而不是将男性和女性的男性价值放在女性制作栏上,名称为性别,并输入bollean,然后将0设置为男性,将1设置为女性。

如果您不想使用布尔值,那么请使用enum数据类型进行性别。在您的情况下,最好使用.enum。

答案 1 :(得分:0)

错误消息与验证无关。验证通过,您正确执行。但是你的模型看起来很奇怪,因为你有男性和女性,而不是相同的“性别”专栏。

答案 2 :(得分:0)

尝试在html中设置正确的名称:

<div class="radio">
  <label><input type="radio" name="male" value="male">male </label>
  <label><input type="radio" name="female" value="female">female</label>
</div>

现在它会查找gander列。

当然,您之后必须编辑验证。

答案 3 :(得分:0)

电台需要laravel的特色作品:

@foreach($status_list as $status_key => $status)

  {!! Form::radio('status', $status_key, false, array('id'=>'status_'.$status_key, 'required'=>'required' )); !!}

  {!! Form::label('status_'.$status_key, $status ) !!}

@endforeach

答案 4 :(得分:0)

您只需添加必需的属性即可在客户端进行验证

<!-- Gender Field -->
<div class="form-group col-sm-6">
    {!! Form::label('gender', 'Gender: *') !!}
    <br>
    <label class="radio-inline">
        {!! Form::radio('gender', "Male", null,['required']) !!} Male
    </label>

    <label class="radio-inline">
        {!! Form::radio('gender', "Female", null) !!} Female
    </label>
</div>