这是我的单选按钮代码
<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
title
,body
,status
,{{1} },male
,female
,updated_at
)值(sdf,sdfsfsd,0 ,, 2017-03-01 13:09:54,2017-03-01 13:09: 54))
这意味着数据库字段需要两个单选按钮数据。在我的桌子上有这些字段'标题','正文','状态','男性','女性''created_at'&amp; 'updated_at'
我的问题是如何验证单选按钮&amp;如何使用单选按钮值插入数据?感谢。
答案 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>