[英]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 & 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.