【问题标题】:checked for multiple checkbox in update form检查更新表单中的多个复选框
【发布时间】:2020-08-30 04:38:16
【问题描述】:

这是我用于更新表单的刀片文件。那么我应该如何通过选中复选框来检索表单中的这些数据。

 <div class="form-group row">
                <label class="col-md-3 col-form-label form-control-label" for="input-description">Hobbies</label>
                <div class="col-md-9">
                    <input type="checkbox" name="hobbies[]" class="form-control-label" value="football" > Football
                    &nbsp; <input type="checkbox" name="hobbies[]" class="form-control-label" value="basketball"> Basketball
                     <input type="checkbox" name="hobbies[]" class="form-control-label" value="table_tennis"> Table Tennis
                     <input type="checkbox" name="hobbies[]" class="form-control-label" value="hockey"> Hockey
                     <input type="checkbox" name="hobbies[]" class="form-control-label" value="others"> Others
                </div>
            </div>
 </div>

这是我的控制器

public function edit($id)
{
    $student=Student::find($id);
    return view('students.edit', compact('student'));
}

在数据库中,.hobbies 是这样存储在 hobbies 列中的

["basketball","football",'table_tennis']

【问题讨论】:

  • 您要根据更新页面上的数据库值勾选复选框吗?
  • @OMiShah 是的,对

标签: laravel laravel-5 eloquent


【解决方案1】:

您应该在刀片中使用更易于维护的 foreach 循环:

<div class="form-group row">
        <label class="col-md-3 col-form-label form-control-label" for="input-description">Hobbies</label>
        <div class="col-md-9">
            @foreach($hobbies as $hobby)
                <input type="checkbox" name="hobbies[]" @if(in_array($hobby,$checked_hobbies)) checked @endif class="form-control-label" value="{{ $hobby }}" > {{ $hobby }}
            @endforeach
        </div>
    </div>

当然你应该在控制器中传递hobbieschecked_hobbies 数组:

$hobbies = ["basketball","football",'table_tennis'];
    $checked_hobbies = ["basketball","football"];
    return view('test', compact('hobbies','checked_hobbies'));

【讨论】:

  • @SauravShrestha 我强烈建议拆分创建、读取、更新、删除方法,这有利于维护,如果您不能拆分它们(创建、更新),则从应用程序设计的角度来看,然后添加检查是否你已经有那个student的数据了
  • 谢谢,但我的表单是用于创建和更新的,所以我想为创建为空,所以我已经完成了 purpose ?? null) ? 'checked' : '' }}> Rice and error is in_array() 期望参数 2 是数组,给定 null 我应该如何解决这个问题?
  • 最好的解决方案是为不难且更方便的每种方法创建单独的刀片,因为与检查的空爱好相比,可能存在更多差异。同样,如果它不是一个选项,那么您应该创建某种标志(变量将告诉刀片是现在创建还是更新)$method='update'; ... compact('update')); 然后签入刀片@if($method == 'update') case update @else case create @endif
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
相关资源
最近更新 更多