files()->in('../resources/js/Pages/Client/BasePageTemplate'); $fileInfos = []; foreach ($finder as $fileInfo) { $fileInfos[] = [ 'filename' => $fileInfo->getBasename('.' . $fileInfo->getExtension()), 'path' => preg_replace('/.*\/(Client\/.*)/', '$1', $fileInfo->getPath() . '/' . $fileInfo->getBasename('.' . $fileInfo->getExtension())), 'extension' => $fileInfo->getExtension(), 'size' => $fileInfo->getSize(), 'mtime' => $fileInfo->getMTime(), 'atime' => $fileInfo->getATime(), 'isReadable' => $fileInfo->isReadable(), 'isWritable' => $fileInfo->isWritable(), ]; } $fileInfos = collect($fileInfos); return $fileInfos->pluck('filename', 'path'); } public static function getForm(Form $form): Form { return $form ->schema([ Section::make() ->schema([ Forms\Components\Tabs::make('')->schema([ Forms\Components\Tabs\Tab::make('Основная информация')->schema([ Forms\Components\Grid::make(2)->schema([ TextInput::make('title')->label('Заголовок')->required() ->live(onBlur: true) ->afterStateUpdated(function (string $operation, string $state, Forms\Set $set) { $set('slug', Str::slug($state)); $set('path', Str::slug($state)); }), TextInput::make('slug')->label('Slug')->unique(ignoreRecord: true)->required() ->live(onBlur: true) ->afterStateUpdated(function (string $operation, string $state, Forms\Set $set, $get) { $set('path', Str::slug($state)); }), ]), Select::make('sub_section_id')->label('Подраздел') ->relationship('section', 'title') ->createOptionForm([ Forms\Components\TextInput::make('title')->label('Название подраздела')->required() ->live(onBlur: true) ->afterStateUpdated(function (string $operation, string $state, Forms\Set $set) { $set('slug', Str::slug($state)); }), TextInput::make('slug')->label('Slug')->unique(ignoreRecord: true)->readOnly()->required(), ]), Select::make('code')->options([ '200' => 'Открытая страница', '404' => 'Не найдено', '500' => 'Ведутся технические работы', ])->label('Статус')->required()->default('200'), Toggle::make('searchable')->default(true)->label('Индексируется поиском')->inline(false), TextInput::make('search_data')->hidden(), ]), Forms\Components\Tabs\Tab::make('Контент')->schema([ ContentBuilderItem::getItem('content') ]), Forms\Components\Tabs\Tab::make('Настройки')->schema([ Select::make('template')->options(self::getPageTemplates())->required(), ]), ]), ]) ]); } }