Laravel 中的表单模型绑定未从下拉列表中的数据库中预选正确的选项

Form Model binding in Laravel not preselecting correct option from database in drop down list

我已经对传递给视图的变量进行了数据转储,我知道它有正确的数据进入。我还用那些内置了选项的下拉菜单对其进行了交叉检查HTML 而不是作为数组传递。 例如。查看 HTML:

中带有选项的下拉菜单
<div class="col-sm-7">
   {{Form::select('prefix', ['Mr'=>'Mr','Ms'=>'Ms','Mrs'=>'Mrs','Miss'=>'Miss','Dr'=>'Dr','Prof'=>'Prof'],null,['id'=>'prefix','class'=>'select2 select-block-level chzn-select','name' => 'prefix'])}}
</div>

对于这个下拉菜单,一切正常。我看到预先选择了正确的选项,并且看到了它们应该是的选项。 $data->prefix 也可以很好地代替简单的 prefix 作为 Form::select.

的第一个参数

但是对于像这样的下拉列表有一个数组作为第二个参数的下拉菜单:

<div class="col-sm-7">
   {{Form::select('team',$data->teams,null, ['id'=>'team','class'=>'select2 select-block-level chzn-select','name'=>'team','required'=>'required'])}}
</div>

...始终选择第一个选项,无论 $data->team 的数据库中有什么值。仅作记录 $data->teams$data->team 是两个不同的变量。一个包含选项,而后者包含该特定人的数据项。 我认为问题在于键和值不匹配......因为它适用于第一个 select 因为它的选项有 KV 对......我不知道......你们怎么看?

在您的情况下 laravel 使用存储的数据库字段检查数组键。如果使用数据库值匹配保存在 select 中的数组键,那么它会自动被 selected。比如你的数组是

`$array=['a' =>name1,'b' => 'name2']`.

如果 'a' 存储在数据库中,则 name1 是 select 自动编辑的。所以请检查存储的数组键和数据库值