如何在 Laravel 控制器中获取复选框值?
How to get checkbox value in a Laravel controller?
我的表单中有一个复选框,我想将其值保存到数据库中。当我选中它时,它的值将为 1,当我取消选中它时它的值将为 0。但是,在控制器中,我一直得到 NULL
。但为什么?不用jQuery
可以解决吗?
Blade/View
<form action="{{ route('admin.categories.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group>
<label>
<input type="checkbox" name="category_is_menu"
value="{{ old('category_is_menu', isset($category) ? 'checked' : '') }}"/>
</label>
</div>
<input class="btn btn-success" type="submit" value="Submit">
</form>
控制器
public function store(Request $request)
{
$category = new Category();
$category->category_is_menu = $request->category_is_menu;
return $category;
}
不幸的是,它给了我 NULL
category_is_menu
。
在复选框输入之前添加一个负值的隐藏输入(在名称属性中具有相同的值)
<div class="form-group">
<input type="hidden" name="category_is_menu" value="0"/>
<input type="checkbox" name="category_is_menu" value="1" {{ old('category_is_menu', isset($category) ? 'checked' : '') }}/>
</div>
复选框输入中的值需要始终为 1。
复选框输入未选中时不会在请求中发送,在这种情况下,隐藏输入将以值 0 发送。
Checkox 勾选时,会将值覆盖为 1。
要么使用其他答案中提到的隐藏输入技巧,要么只检查输入是否已通过。如果完全通过,则进行检查,如果不通过,则未进行检查:
$category->category_is_menu = $request->has('category_is_menu');
如果检查过,则为 true,1,如果未检查,则为 false,0。
我的表单中有一个复选框,我想将其值保存到数据库中。当我选中它时,它的值将为 1,当我取消选中它时它的值将为 0。但是,在控制器中,我一直得到 NULL
。但为什么?不用jQuery
可以解决吗?
Blade/View
<form action="{{ route('admin.categories.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group>
<label>
<input type="checkbox" name="category_is_menu"
value="{{ old('category_is_menu', isset($category) ? 'checked' : '') }}"/>
</label>
</div>
<input class="btn btn-success" type="submit" value="Submit">
</form>
控制器
public function store(Request $request)
{
$category = new Category();
$category->category_is_menu = $request->category_is_menu;
return $category;
}
不幸的是,它给了我 NULL
category_is_menu
。
在复选框输入之前添加一个负值的隐藏输入(在名称属性中具有相同的值)
<div class="form-group">
<input type="hidden" name="category_is_menu" value="0"/>
<input type="checkbox" name="category_is_menu" value="1" {{ old('category_is_menu', isset($category) ? 'checked' : '') }}/>
</div>
复选框输入中的值需要始终为 1。
复选框输入未选中时不会在请求中发送,在这种情况下,隐藏输入将以值 0 发送。 Checkox 勾选时,会将值覆盖为 1。
要么使用其他答案中提到的隐藏输入技巧,要么只检查输入是否已通过。如果完全通过,则进行检查,如果不通过,则未进行检查:
$category->category_is_menu = $request->has('category_is_menu');
如果检查过,则为 true,1,如果未检查,则为 false,0。