如果未选择任何选项,则多个选择返回'null'

时间:2015-04-23 22:20:24

标签: laravel laravel-5 jquery-select2

当多个选择框为空时,返回空值 - 这会在对数据透视表使用sync命令时导致错误。如何使选择框返回空白数组''而不是null?

{!! Form::select('tag_list[]', $tags, '', array('class' => 'select2 form-control', 'multiple')) !!}

我能够解决问题的唯一方法是在同步之前检查null,即

private function syncTags(Company $company, $tags)
{
    if (is_null($tags)) {
        $tags = [];
    }
    $company->tags()->sync($tags);
}

2 个答案:

答案 0 :(得分:1)

如果未选择任何内容,则Laravel确实返回null。手动空值检查是重新调整案例的一种方法,就像您已经完成的那样。

另一种选择是选择"某些东西"默认情况下,如果用户没有选择它,但这是一个丑陋的黑客。我用隐藏的输入做了它,它具有相同的名称。一个将覆盖其他,如果没有选择任何内容,则将使用隐藏的输入值。

答案 1 :(得分:0)

到目前为止,这是最好的解决方案(仍然有点难看!)

$tags = $request->input('tag_list', []);
$company->tags()->sync($tags);