我遇到问题,我正试图处理
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"
。返回Input时,如何将checked属性设置为checked
?
注意:我有很多文本框和单选按钮可以正常工作,所以我知道问题并不在于Input::old("rms_cs[]")
以外的任何问题。我认为问题是rms_cs[]
是一个索引数组;即rms_cs[0] = "Something"
而非rms_cs["Premises Liability Survey"] = "Something"
如果有人能够对此有所了解/提供更好的方法来处理这样的事情,那就太棒了。
答案 0 :(得分:1)
您可以使用Laravel Form&amp; HTML构建器来实现您的目标,并在您的控制器中执行一些额外的工作。
在您的控制器中,您手动构建一个复选框数组,如下所示:
$boxes = array();
$checkboxInput = Input::get('box');
foreach ($checkboxInput as $box) {
$boxes[$box] = true;
}
然后返回$ box:
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'])}}
现在你应该看到一些复选框已被检查。
答案 1 :(得分:1)
所以,我最终搞清楚了。我改变了
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":"" }}
这就是诀窍。