在拉拉维尔的零输入"implode(): Invalid arguments passed"



我正在使用laravel 5.5我有一个多选下拉列表。如果我不选择任何值,就会产生一个错误"内爆((:传递的参数无效">

<select  multiple="multiple" name="language[]">
@foreach($language_data as $language)
<option value="{{$language->language_id}}">{{$language->language_name}}</option>
@endforeach
</select>

控制器

$language = $request->input('language');
$language = implode(',', $language);
DB::table('language')->insert(['language' => $language,]);

只需使用一个简单的if:

if($request->input('language') !== ''){
$language = $request->input('language');
$language = implode(',', $language);
DB::table('language')->insert(['language' => $language,]);
}

如果需要的话,如果没有像下面的那样选择语言,你可以在后端定义一种语言

$request->input('language') !== '' ? $language = $request->input('language') : $language = 'en_GB';
$language = implode(',', $language);
DB::table('language')->insert(['language' => $language,]);

试试这个,应该可以解决问题

$language = ''; //set default language here
if($request->input('language')) {
$language = $request->input('language');
$language = implode(',', $language);
}
DB::table('language')->insert(['language' => $language,]);

只需在内爆前执行一次检查。

$language = $request->input('language');
if (!empty($language)) {
$language = implode(',', $language);
} else {
$language = '';
}
DB::table('language')->insert(['language' => $language]);
$language = optional(collect($request->input('language')))->implode(',');
DB::table('language')->insert(['language' => $language]);

从$request值中生成一个集合,在事件中包装为可选"language"不是必需属性,内爆结果。

相关内容

最新更新