subTypes as $secondType) { $tab_content=[]; foreach ($secondType->subTypes as $thirdType) { $tab_content[$thirdType->alias]['type']=$thirdType; $form= new ValueForm(); $form->disableReset(); $form->action(admin_base_path()."/config/".$thirdType->id); foreach ($thirdType->configs as $config) { $input_type=$config->input_type; $field=$form->$input_type($config->alias, $config->name); if ($input_type=='password') { $field->value("***********") ->default($config->value?"***********":$config->default_value); } else { $field->value($config->value) ->default($config->value?$config->value:$config->default_value); } if (!empty($config->tips)) { $field->help($config->tips); } if (!empty($config->placeholder)) { $field->placeholder($config->placeholder); } if (!empty($config->option_values)) { if (is_array($config->option_values)) { $field->options($config->option_values); } elseif ($input_type == 'select') { $field->options($config->option_values); } } } $tab_content[$thirdType->alias]['form']=$form; } $tab->add($secondType->name, view('admin.config.config_tab_content') ->with('contents', $tab_content)->with('type', $secondType)->render(), $tab_id==$secondType->id); } return $content ->header($firstType->name) ->description($firstType->tips) ->body($tab->render()); } /** * Store a newly created resource in storage. * * @param Request $request * @param int $type_id * @return mixed */ public function store(Request $request, int $type_id) { $configType=ConfigType::findOrFail($type_id); foreach ($configType->configs as $config) { if (!empty($config->rules)) { $request->validate([$config->alias=>$config->rules], $config->rule_messages); } if (in_array($config->input_type, ['image', 'file'])) { if ($request->hasFile($config->alias)) { $file=$config->alias; $config->value=$request->$file ->store(config('admin.upload.directory.'.$config->input_type), config('admin.upload.disk')); $config->save(); Artisan::call('aix:config'); } } else { if ($config->input_type == 'switch') { $submitValue = $request->get($config->alias) == 'on'?1:0; } elseif ($config->input_type == 'password') { if ($request->get($config->alias) == '***********') { continue; } $submitValue = $request->get($config->alias, $config->default_value); } else { $submitValue = $request->get($config->alias, $config->default_value); } if ($config->value != $submitValue) { $config->value=$submitValue; $config->save(); } } } Artisan::call('aix:config'); admin_toastr('修改成功', 'success'); return redirect(admin_base_path().'/config/'.$configType->parentType->parent.'/'.$configType->parent); } }