我有这个输入按钮:image
输入代码:
<div class="media">
<label class="col-form-label m-r-10">Status Of System</label>
<div class="media-body text-right icon-state">
<label class="switch">
<input
type="checkbox"
name="status"
value="{{ setting()->status == '1' ? 0 : 1 }}"
>
<span class="switch-state bg-primary"></span>
</label>
setting()->状态是辅助函数:
if (! function_exists('setting') ) {
function setting(){
return \App\Setting::first();
}
}
在状态栏中,默认值为1。
问题是当我尝试在1
和0
之间切换时。注意输入中的value属性,我尝试说数据库1中的列是否放置0否则放置1来切换值,但是这种方式不会运行find!如何做这样的事情:(
答案 0 :(得分:0)
如果我正确理解了您的问题,请尝试以下操作:
根据设置值选中复选框:
<input
type="checkbox"
name="status"
@if(1 === setting()->status) checked @endif
>
您在这里从数据库中检索了status
。如果存在且正好等于1
,将选中该复选框。如果不是,则为未选中状态。
接下来,您要根据此复选框checked
状态更改数据库值。
仅当选中复选框时,复选框字段才会出现在$request
中。因此,尝试重构一下您的控制器:
$setting = \App\Setting::first(); // your setting
$setting->status = isset($request->status) ? 1 : 0; // if status exists in request, it means that checkbox was checked
$setting->save(); // update your database row
答案 1 :(得分:0)
问题仅是一个:
未选中复选框时,其值未插入请求中。因此,您必须在更新前检查该复选框的值是否存在。
所以不是
setting()->update($request->all());
您必须
$params = $request->all();
if(!isset($params['status'])) $params['status'] = 1;
setting()->update($params);
在Internet上还有另一种解决方案,即添加一个hidden
输入,该输入具有相同的name
以及如果未选中该复选框,则具有所需的值:>
<input type="hidden" name="status" value="1">
但是我认为这只是一个肮脏的解决方法...但是您可以尝试一下