| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | <?phpnamespace 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);    }}
 |