OwlCyberSecurity - MANAGER
Edit File: ShoppingSiteResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\ShoppingSiteResource\Pages; use App\Models\ShoppingSite; use Filament\Forms\Components\FileUpload; use Filament\Forms\Components\Grid; use Filament\Forms\Components\Section; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables\Actions\BulkActionGroup; use Filament\Tables\Actions\CreateAction; use Filament\Tables\Actions\DeleteBulkAction; use Filament\Tables\Actions\EditAction; use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\Filter; use Filament\Tables\Filters\SelectFilter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; class ShoppingSiteResource extends Resource { protected static ?string $model = ShoppingSite::class; protected static ?string $navigationIcon = 'heroicon-o-building-storefront'; protected static ?string $modelLabel = 'سایت مجاز'; protected static ?string $pluralModelLabel = 'سایت های مجاز'; protected static ?string $slug = 'shopping-site'; protected static ?string $navigationGroup = 'تنظیمات'; protected static ?int $navigationSort = 3; public static function form(Form $form): Form { return $form->schema([ Section::make()->schema([ Grid::make(3)->schema([ Grid::make(1)->schema([ TextInput::make('site')->label('نام')->required(), TextInput::make('url')->label('آدرس')->required()->url(), Select::make('region_id')->relationship(name: 'region', titleAttribute: 'name')->required(), ])->columnSpan(2), Grid::make(1)->schema([ FileUpload::make('path')->image()->label('تصویر')->imageEditor(), ])->columnSpan(1), ]) ]) ]); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('id')->label('#'), ImageColumn::make('path')->label('تصویر')->extraImgAttributes(['style' => 'max-width: 100px;height: auto;']), TextColumn::make('site')->label('نام'), TextColumn::make('region.name')->label('ریجن'), TextColumn::make('url')->label('آدرس')->copyable(), ]) ->filters([ Filter::make('site')->form([ TextInput::make('site')->label('نام'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['site'], fn(Builder $query, $date): Builder => $query->where('site', 'like', '%' . $date . '%'), )), SelectFilter::make('region_id')->relationship('region', 'name')->label('ریجن') ]) ->actions([ EditAction::make(), ]) ->bulkActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]) ->emptyStateActions([ CreateAction::make(), ]); } public static function getPages(): array { return [ 'index' => Pages\ListShoppingSites::route('/'), 'create' => Pages\CreateShoppingSite::route('/create'), 'edit' => Pages\EditShoppingSite::route('/{record}/edit'), ]; } public static function canViewAny(): bool { return auth()->user()->can('shopping-site::view'); } }