html - Laravel Blade:复选框将“空”值发送到数据库
问题描述
我不明白。我的复选框在选中时会向我的控制器发送一个“空”值。如果它在数据库中,它会回来检查,但是当我取消选中它,然后再次检查它时,我的表单发送一个“空”值我做错了什么?
<div class="col">
<input type="checkbox" name="staff" @if($child->staff == 'true') checked @endif >
</div>
解决方案
该checked
属性仅确定复选框是否应包含在post
请求中。该value
属性确定复选框的值(如果它checked
包含在表单提交中)。
如果您未指定 avalue
并且该复选框包含在post
请求中,则其值为on
:
<input type="checkbox" name="staff" id="staff">
"staff" => "on"
如果你想要一个true
值,你需要设置它。
<input type="checkbox" name="staff" value="true"
@if($child->staff == 'true') checked @endif>
即使在上面的示例value
中复选框是true
,如果不是checked
,它将不会包含在提交的表单请求中,因此您有一个false
值(技术上)。
更新
我希望能够在真假之间切换。当我将复选框切换为空时,它仍然将空值传递给数据库。有任何想法吗?
复选框值是这样的strings
,因此您需要自己执行转换为所需值,然后将其存储在数据库中。可以实现的示例如下:
public function update(Request $request, Staff $staff)
{
// Perform some validation on the incoming Request
$request->validate([
'staff' => ['in:true,false']
]);
// Assuming we get here, data is valid
// If the Request object has a key named 'staff'
// then the checkbox was checked (true).
// If there is no key named 'staff'
// then the checkbox was not checked (false)
$staff->child = $request->has('staff');
}
推荐阅读
- python-3.x - 如何获得 Scrapy 请求以转到下一页?
- sql - How to maintain formatting for numbers in multi-value combo box?
- node.js - mongoDb 通过匹配来自同一索引对象数组的多个值来查找
- kibana - 如何在 Kibana 中禁用/隐藏开发工具插件
- python - How to go back to the intent after answering Yes or No
- spring - Spring Boot 2.1.1 Issue Accessing Tables in PostgreSQL that are within Oauth2
- javascript - Reading only the first value in JavaScript
- javascript - Ngrx server sided pagination with router parameters
- python - 如何获得多个峰下的面积值
- html - 如何在 Shopify 中将评论部分放置在移动和桌面的不同位置?