basePage()->body([ $this->form(), ]); return $this->response()->success($page); } public function form() { return $this->baseForm(false) ->redirect('')->labelWidth('200px') ->api($this->getStorePath()) ->data(settings()->all()) ->body( Tabs::make()->tabs([ Tab::make()->title('上传设置')->body([ amis()->RadiosControl('upload_disk', '上传驱动')->options([ 'public' => '本地存储', 'oss' => '阿里云OSS', ])->value('public')->required(true), amis()->TextControl('oss_config.access_key_id', '阿里云AccessKeyId')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}'), amis()->TextControl('oss_config.access_key_secret', '阿里云AccessKeySecret')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}'), amis()->TextControl('oss_config.bucket', '对象存储Bucket')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('示例: my-bucket'), amis()->TextControl('oss_config.endpoint', '对象存储endpoint')->required(true)->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('示例: oss-cn-shanghai.aliyuncs.com'), amis()->TextControl('oss_config.domain', '自有域名')->size('lg')->visibleOn('${upload_disk == "oss"}')->remark('填写即启用 示例: my-domain.com'), amis()->SwitchControl('oss_config.use_ssl', '开启SSL')->value(false)->visibleOn('${upload_disk == "oss"}'), ]), Tab::make()->title('打卡设置')->body([ amisMake()->NumberControl()->name('sign.distance')->label('允许打卡的距离(公里)') ]), ]) ); } public function store(Request $request) { $data = $request->only([ 'upload_disk', 'oss_config', 'sign' ]); //上传设置-修改env文件内配置; if (! empty($data['upload_disk'])) { $envData['FILESYSTEM_DISK'] = $data['upload_disk']; if ($envData['FILESYSTEM_DISK'] == 'oss') {//如果设置为OSS驱动,则配置env变量 $envData['OSS_ACCESS_KEY_ID'] = Arr::get($data['oss_config'], 'access_key_id'); $envData['OSS_ACCESS_KEY_SECRET'] = Arr::get($data['oss_config'], 'access_key_secret'); $envData['OSS_BUCKET'] = Arr::get($data['oss_config'], 'bucket'); $envData['OSS_ENDPOINT'] = Arr::get($data['oss_config'], 'endpoint'); $envData['OSS_DOMAIN'] = Arr::get($data['oss_config'], 'domain'); if (! empty($envData['OSS_DOMAIN'])) { $envData['OSS_CNAME'] = 'true'; } else { $envData['OSS_CNAME'] = 'false'; } $envData['OSS_SSL'] = Arr::get($data['oss_config'], 'use_ssl') ? 'true' : 'false'; } $envPath = base_path().DIRECTORY_SEPARATOR.'.env'; $contentArray = collect(file($envPath, FILE_IGNORE_NEW_LINES)); $contentArray->transform(function ($item) use ($envData) { foreach ($envData as $key => $value) { if (str_contains($item, $key)) { return $key.'='.$value; } } return $item; }); $content = implode("\n", $contentArray->toArray()); \File::put($envPath, $content); } return settings()->adminSetMany($data); } }