【问题标题】:How to get checkbox value in a Laravel controller?如何在 Laravel 控制器中获取复选框值?
【发布时间】:2019-12-30 19:01:15
【问题描述】:

我的表单中有一个复选框,我想将其值保存到数据库中。当我选中它时,它的值为 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 for category_is_menu。

【问题讨论】:

    标签: laravel laravel-6


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      如果它被检查你得到真,1,如果它没有被检查你得到假,0。

      【讨论】:

        猜你喜欢
        • 2014-08-15
        • 2013-10-14
        • 1970-01-01
        • 2020-10-18
        • 2013-11-23
        • 2012-08-06
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多