如何在Laravel控制器中获取复选框值?

时间:2019-12-30 19:01:15

标签: laravel laravel-6

我的表单中有一个复选框,我想将其值保存到数据库中。当我选中它时,它的值为1,而当我取消选中它时,它的值为0。但是,在控制器中,我一直都在NULL中。但为什么?如果没有jQuery,是否可以解决?

刀片/视图

<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

2 个答案:

答案 0 :(得分:1)

在复选框输入之前添加一个具有负值的隐藏输入(在name属性中具有相同的值)

<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。

答案 1 :(得分:0)

要么使用其他答案中提到的隐藏输入技巧,要么检查输入是否全部通过。如果完全通过,则对其进行检查,如果不通过,则不进行检查:

$category->category_is_menu = $request->has('category_is_menu');

如果选中则为true,否则为0。