OwlCyberSecurity - MANAGER
Edit File: ProductCategoryResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\ProductCategoryResource\Pages; use App\Filament\Resources\ProductCategoryResource\RelationManagers; use App\Models\ProductCategory; 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 ProductCategoryResource extends Resource { protected static ?string $model = ProductCategory::class; protected static ?string $navigationIcon = 'heroicon-o-list-bullet'; protected static ?string $slug = 'product-category'; protected static ?string $modelLabel = 'دسته بندی محصول'; protected static ?string $pluralModelLabel = 'دسته بندی محصولات'; protected static ?int $navigationSort = 2; 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\ListProductCategories::route('/'), 'create' => Pages\CreateProductCategory::route('/create'), 'edit' => Pages\EditProductCategory::route('/{record}/edit'), ]; } public static function canViewAny(): bool { return auth()->user()->can('product-category::view'); } }