title('MINI扩展') ->description('官方推荐的扩展,不开放第三方(安装或卸载时,若出现红色的错误,重新刷新一下浏览器就行)') ->body($this->grid()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { return new Grid(new WxExtension(), function (Grid $grid) { $grid->number(); $grid->column('name')->displayUsing(WxName::class); $grid->column('description')->displayUsing(Extensions\Description::class)->width('50%'); $grid->column('authors')->display(function ($v) { if (! $v) { return; } foreach ($v as &$item) { $item = "{$item['name']} <{$item['email']}>"; } return implode('
', $v); }); $grid->disablePagination(); $grid->disableCreateButton(); $grid->disableDeleteButton(); $grid->disableBatchDelete(); $grid->disableFilterButton(); $grid->disableFilter(); $grid->disableQuickEditButton(); $grid->disableEditButton(); $grid->disableDeleteButton(); $grid->disableViewButton(); $grid->disableActions(); $grid->tools([ '  应用市场', new InstallFromLocal(), ]); if(env('APP_ENV') == 'local'){ $grid->quickCreate(function (Grid\Tools\QuickCreate $create) { $create->text('name') ->attribute('style', 'width:240px') ->placeholder('Input Name. Eg: dcat-admin/demo') ->required(); $create->text('namespace') ->attribute('style', 'width:240px') ->placeholder('Input Namespace. Eg: DcatAdmin\\Demo'); $create->select('type') ->options([1 => trans('admin.application'), 2 => trans('admin.theme')]) ->attribute('style', 'width:140px!important') ->default(1) ->required(); }); } }); } public function form() { $form = new Form(new WxExtension()); $form->hidden('name')->rules(function () { return [ 'required', function ($attribute, $value, $fail) { if (! Helper::validateExtensionName($value)) { return $fail( "[$value] is not a valid package name, please type a name like \"vendor/name\"" ); } }, ]; }); $form->hidden('namespace'); $form->hidden('type'); $self = $this; $form->saving(function (Form $form) use ($self) { $package = $form->name; $namespace = $form->namespace; $type = $form->type; if ($package) { $results = $self->createExtension($package, $namespace, $type); return $form ->response() ->refresh() ->timeout(10) ->success($results); } }); return $form; } public function createExtension($package, $namespace, $type) { $namespace = trim($namespace, '\\'); $output = new StringOutput(); Artisan::call('admin:ext-make', [ 'name' => $package, '--namespace' => $namespace ?: 'default', '--theme' => $type == 2, ], $output); return sprintf('
%s
', (string) $output->getContent()); } }