繁体   English   中英

Laravel-从返回的数组输入设置复选框的选中属性

[英]Laravel - Setting Checked Property of Checkbox From Returned Array Input

我在尝试处理问题时遇到问题

return Redirect::to('page')->withInput();

在使用一系列复选框时调用。 基本上,如果我的验证器失败,我想返回,显示一些错误,并用其值重新填充输入。 这是我遇到的困难的输入。

<div class="row">
  <div class="col-xs-12">
    <label class="checkbox-inline">
      <input type="checkbox" name="rms_cs[]" value="Marshall and Swift Property Valuation" {{ (Input::old("rms_cs[]") == "Marshall and Swift Property Valuation") ? "checked":"" }}> Marshall &amp; Swift Property Valuation
    </label>
  </div>
</div>
<div class="row">
  <div class="col-xs-12">
    <label class="checkbox-inline">
      <input type="checkbox" name="rms_cs[]" value="Premises Liability Survey" {{ (Input::old("rms_cs[]") == "Premises Liability Survey") ? "checked":"" }}> Premises Liability Survey
    </label>
  </div>
</div>

因此,基本上,我有多个复选框,每个复选框都具有name="rms_cs[]"value="something" 我怎么会去检查的属性设置为checked返回输入时?

注意:我有很多文本框和单选按钮都可以正常工作,所以我知道问题不在于Input::old("rms_cs[]") 我认为问题在于rms_cs[]是一个索引数组; rms_cs[0] = "Something"而不是rms_cs["Premises Liability Survey"] = "Something"

如果有人能对此有所了解/提供一种更好的方式来处理类似的事情,那将是很棒的。

您可以使用Laravel Form&HTML构建器来实现所需的功能,并在控制器中做一些额外的工作。

在您的控制器中,您可以手动构造一个复选框数组,如下所示:

$boxes = array();
$checkboxInput = Input::get('box');
foreach ($checkboxInput as $box) {
    $boxes[$box] = true;
}

然后返回$ boxes:

return Redirect::back()->withInput()->with('boxes',$boxes);

接下来,在刀片文件中,使用Form类将默认检查值设置为true或false,如下所示:

{{Form::checkbox('box[]', 'box1', isset($boxes['box1']) && $boxes['box1'])}}
{{Form::checkbox('box[]', 'box2', isset($boxes['box2']) && $boxes['box2'])}}

现在,您应该看到已选中某些复选框。

因此,我最终弄清楚了这一点。 我变了

name="rms_ssp[]"

在每个复选框上:

name="rms_ssp[epis]"
name="rms_ssp[mrp]"

等等,因此该数组不再被索引。 然后,我从旧输入中制作了一个变量:

<?php $rms_ssp = Input::old('rms_ssp'); ?>

并在每个复选框中添加了此检查:

{{ (isset($rms_ssp['epis'])) ? "checked":"" }}
{{ (isset($rms_ssp['mrp'])) ? "checked":"" }}

那就成功了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM