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 自动编辑的。所以请检查存储的数组键和数据库值
我已经对传递给视图的变量进行了数据转储,我知道它有正确的数据进入。我还用那些内置了选项的下拉菜单对其进行了交叉检查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 自动编辑的。所以请检查存储的数组键和数据库值