OwlCyberSecurity - MANAGER
Edit File: StoreResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\StoreResource\Pages; use App\Filament\Resources\StoreResource\RelationManagers; use App\Models\Store; use Filament\Forms; use Filament\Forms\Components\FileUpload; use Filament\Forms\Components\Grid; use Filament\Forms\Components\Tabs; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\Toggle; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\Filter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; use Mohamedsabil83\FilamentFormsTinyeditor\Components\TinyEditor; class StoreResource extends Resource { protected static ?string $model = Store::class; protected static ?string $navigationIcon = 'heroicon-o-building-storefront'; protected static ?string $slug = 'store'; protected static ?string $modelLabel = 'فروشگاه'; protected static ?string $pluralModelLabel = 'فروشگاه ها'; protected static ?int $navigationSort = 1; protected static ?string $navigationGroup = 'خرید اعتباری'; public static function form(Form $form): Form { return $form ->schema([ Tabs::make('Heading') ->tabs([ Tabs\Tab::make('محتوا') ->schema([ Grid::make(3)->schema([ Grid::make(1)->schema([ TextInput::make('title')->required()->label('عنوان')->maxLength(255), TextInput::make('slug')->label('اسلاگ')->unique(ignoreRecord: true)->maxLength(255)->required(), TinyEditor::make('body')->label('توضیحات')->fileAttachmentsDisk('public')->fileAttachmentsVisibility('public')->fileAttachmentsDirectory('uploads')->required(), ])->columnSpan(2), Grid::make(1)->schema([ FileUpload::make('image_name')->image()->label('تصویر')->imageEditor()->required(), Toggle::make('is_show')->label('وضعیت نمایش')->required(), ])->columnSpan(1), ]), ]), Tabs\Tab::make('سئو') ->schema([ Grid::make(1) ->relationship('seo') ->schema([ TextInput::make('title')->label('تایتل صفحه')->maxLength(255), TextInput::make('keyword')->label('کیورد صفحه')->maxLength(255), Textarea::make('description')->label('توضیحات صفحه'), ]) ]), ]) ])->columns(1); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('title')->label('عنوان'), TextColumn::make('slug')->label('اسلاگ'), IconColumn::make('is_show')->label('وضعیت نمایش')->boolean(), ]) ->filters([ Filter::make('title')->form([ TextInput::make('title')->label('نام'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['title'], fn(Builder $query, $data): Builder => $query->where('title', 'like', '%' . $data . '%') )), ]) ->actions([ Tables\Actions\EditAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ ]), ]) ->emptyStateActions([ Tables\Actions\CreateAction::make(), ])->defaultSort('updated_at', 'desc'); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => Pages\ListStores::route('/'), 'create' => Pages\CreateStore::route('/create'), 'edit' => Pages\EditStore::route('/{record}/edit'), ]; } public static function canViewAny(): bool { return auth()->user()->can('store::view'); } }