如何验证 Laravel 5.4 单选按钮?
Posted
技术标签:
【中文标题】如何验证 Laravel 5.4 单选按钮?【英文标题】:How to validate Laravel 5.4 radio button? 【发布时间】:2017-07-20 20:16:45 【问题描述】:如何在 Laravel 5.4 中验证我的单选按钮?
<div class="radio">
<label><input name="gander" type="radio" value="male">male </label>
<label><input name="gander" type="radio" 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();
return redirect('blog');
当我提交表单时,我收到以下错误。
SQLSTATE[23000]:违反完整性约束:1048 列“男性” 不能为空(SQL:插入
posts
(title
,body
,status
,male
,female
,updated_at
,created_at
) 值 (sdf, sdfsfsd, 0, , , 2017-03-01 13:09:54, 2017-03-01 13:09:54))
这意味着两个单选按钮的数据都需要数据库字段。在我的表中有这些字段:'title'、'body'、'status'、'male'、'female'、'created_at' & 'updated_at'。
我的问题是如何验证单选按钮以及如何使用单选按钮值插入数据?
【问题讨论】:
为什么male
和female
有两个差异字段???你能详细说明吗?你可以简单地取一个字段gender
。并填写值是男性还是女性。你的方式是错误的!大不
tnx prakash 显示我的错误,。现在我通过 tinyinteger 数据类型创建我的模式字段。现在它的作品。
太棒了!!!祝你好运
【参考方案1】:
错误信息与验证无关。验证通过,您可以正确执行。但是你的模型看起来很奇怪,因为你有男性和女性,而不是相同的“性别”列。
【讨论】:
我的解决方案是什么? 解决方案是更改模型和表架构,并将“男性”和“女性”两列替换为“性别”一列。枚举将是完美的。【参考方案2】:如果性别是必填字段,那么您还应该将所需的验证传递给 gander 属性,如下所示
'gander'=> 'required|in:male,female'
如果它不是必填字段,则在您的数据库表中将 male
列设为可为空。
您的表格设计中还有一个问题,而不是在名称为性别的列上将男性值设置为男性,将女性值设置为女性,然后将0
设置为male
,将1
设置为@987654326 @。
如果您不想使用 boolean,则使用 enum 数据类型作为 gender.enum 是您的最佳选择。
【讨论】:
您的表格设计存在问题,请创建一个名称为性别的枚举列,其值为“男性”和“女性”,而不是为男性和女性单独放置一列 如何将布尔类型设置为男性为 0,女性为 1?【参考方案3】:电台需要的精选作品与 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】:您只需添加所需的属性即可在客户端进行验证
<!-- 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>
【讨论】:
以上是关于如何验证 Laravel 5.4 单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章