我有一个Project
模型,它有一个名为project_type
的多选字段。我正在使用Select2作为该字段。
我在config/enum.php
中设置了这样的枚举:
<?php
return [
'project_types' => [
'0' => 'WordPress Brochure Website',
'1' => 'WordPress WooCommerce Website',
'2' => 'Drupal Website',
'3' => 'SEO',
'4' => 'Branding',
'5' => 'Bespoke Web App'
]
];
?>
在我的create
视图中,我有一个包含该字段的表单:
{{ Form::open(array('url' => 'projects')) }}
<div class="form-group">
{!! Form::label('Project Type') !!}
{!! Form::select('project_type[]', Config::get('enums.project_types'), null, ['multiple'=>'multiple']); !!}
</div>
{{ Form::submit('Create Project', array('class' => 'btn btn-primary')) }}
{{ Form::close() }}
然后在我的控制器中保存多选字段值时,我将数组转换为字符串以存储到数据库中:
public function store(ProjectRequest $request)
{
$project_type = $request->input('project_type');
$project_type = implode(',', $project_type);
$input = $request->except('project_type');
$input['project_type'] = $project_type;
Project::create($input);
return redirect()->route('projects')->with('message', 'Rate created.');
}
这将以多个0,1,3
的格式存储多选字段。
这样可以保存好但是现在当我想要编辑项目时我需要从数据库中提取值并填充多选字段,这就是我在努力的地方,这就是我在edit
中所拥有的内容图。
{{ Form::model($project, array('route' => array('projects.update', $project->id), 'method' => 'PUT')) }}
<div class="form-group">
{!! Form::label('Project Type') !!}
{!! Form::select('project_type[]', Config::get('enums.project_types'), 1, ['multiple'=>'multiple']); !!}
</div>
{{ Form::submit('Update Project', array('class' => 'btn btn-primary')) }}
{{ Form::close() }}
目前您可以看到我已将多选字段的默认值硬编码为1
,但是有一种方法可以将多选字段的默认值设置为什么存储在db?
答案 0 :(得分:0)
基本上正是@Jonathon在评论中所说的,我需要将我的内爆字符串转换回数组并将其传递给默认值参数:
<?php
// explode the saved data back into an array
$project_type = explode(',', $project->project_type);
?>
<div class="form-group">
{!! Form::label('Project Type') !!}
{!! Form::select('project_type[]', Config::get('enums.project_types'), $project_type, ['multiple'=>'multiple']); !!}
</div>