initExtension($extension); } protected function initExtension(?ServiceProvider $extension) { if ($extension) { $this->extension = $extension; $this->payload(['_extension_' => $extension->getName()]); } } /** * 处理请求. * * @param array $input * * @return \Dcat\Admin\Http\JsonResponse */ public function handle(array $input) { $this->extension()->config($this->formatConfig($input)); return $this->response()->success(trans('admin.save_succeeded')); } /** * 格式化配置信息. * * @param array $input * * @return array */ protected function formatConfig(array $input) { return $input; } /** * 表单字段定义. * * @return void */ abstract public function form(); /** * 填充表单数据. * * @return array */ public function default() { return $this->extension()->config() ?: []; } /** * @return ServiceProvider */ public function extension() { if (! empty($this->payload['_extension_'])) { return Admin::extension()->get($this->payload['_extension_']); } return $this->extension; } }