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);
- }
- }
|