| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- <?php
 
- namespace App\Admin\Controllers;
 
- use App\Admin\Extensions\Form\ValueForm;
 
- use App\Http\Controllers\Controller;
 
- use App\Models\CategoryDistrict;
 
- use App\Models\ConfigType;
 
- use Encore\Admin\Controllers\HasResourceActions;
 
- use Encore\Admin\Layout\Content;
 
- use Encore\Admin\Widgets\Tab;
 
- use Illuminate\Http\Request;
 
- use Illuminate\Support\Facades\Artisan;
 
- class ConfigController extends Controller
 
- {
 
-     use HasResourceActions;
 
-     /**
 
-      * Index interface.
 
-      *
 
-      * @param Content $content
 
-      * @param int $type_id
 
-      * @param int $tab_id
 
-      * @return Content
 
-      * @throws \Throwable
 
-      */
 
-     public function index(Content $content, int $type_id, int $tab_id = 0)
 
-     {
 
-         $tab = new Tab();
 
-         $firstType=ConfigType::findOrFail($type_id);
 
-         foreach ($firstType->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);
 
-     }
 
- }
 
 
  |