Разработка административной панели на Filament (Laravel)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка административной панели на Filament (Laravel)
Средняя
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Разработка административной панели на Filament (Laravel)

Filament — современный фреймворк для построения admin-панелей на Laravel. Использует Livewire и Alpine.js для реактивных компонентов без написания JavaScript. В 2025 году — де-факто стандарт для Laravel-проектов, которым нужна быстро написанная, но гибко настраиваемая панель.

Установка

composer require filament/filament:"^3.0"
php artisan filament:install --panels
php artisan make:filament-user

Создание ресурса

php artisan make:filament-resource Order --generate

Это создаёт OrderResource со стандартными CRUD-операциями. Кастомизация:

class OrderResource extends Resource
{
    protected static ?string $model = Order::class;
    protected static ?string $navigationIcon = 'heroicon-o-shopping-cart';
    protected static ?string $navigationGroup = 'Продажи';

    public static function form(Form $form): Form
    {
        return $form->schema([
            Select::make('status')
                ->options(OrderStatus::class)
                ->required(),
            TextInput::make('total')
                ->numeric()->prefix('₽')->disabled(),
            Select::make('customer_id')
                ->relationship('customer', 'name')
                ->searchable()->preload(),
            Repeater::make('items')
                ->relationship()
                ->schema([
                    Select::make('product_id')->relationship('product', 'name')->searchable(),
                    TextInput::make('quantity')->numeric()->minValue(1),
                    TextInput::make('price')->numeric()->prefix('₽')
                ])
        ]);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('id')->sortable(),
                TextColumn::make('customer.name')->searchable(),
                BadgeColumn::make('status')
                    ->colors(['warning' => 'pending', 'success' => 'completed', 'danger' => 'cancelled']),
                TextColumn::make('total')->money('RUB')->sortable(),
                TextColumn::make('created_at')->dateTime()->sortable()
            ])
            ->filters([
                SelectFilter::make('status')->options(OrderStatus::class),
                Filter::make('created_at')
                    ->form([DatePicker::make('from'), DatePicker::make('until')])
                    ->query(fn($query, $data) =>
                        $query->when($data['from'], fn($q, $d) => $q->whereDate('created_at', '>=', $d))
                              ->when($data['until'], fn($q, $d) => $q->whereDate('created_at', '<=', $d))
                    )
            ])
            ->actions([
                Tables\Actions\EditAction::make(),
                Action::make('complete')
                    ->icon('heroicon-o-check')
                    ->color('success')
                    ->requiresConfirmation()
                    ->action(fn(Order $record) => $record->markAsCompleted())
                    ->visible(fn(Order $record) => $record->status === 'pending')
            ])
            ->bulkActions([
                BulkAction::make('export')
                    ->icon('heroicon-o-arrow-down-tray')
                    ->action(fn($records) => ExportOrders::run($records))
            ]);
    }
}

Виджеты и дашборд

class RevenueWidget extends StatsOverviewWidget
{
    protected function getStats(): array
    {
        return [
            Stat::make('Выручка сегодня', '₽' . number_format(Order::today()->sum('total') / 100, 0, '.', ' '))
                ->description('+12% к прошлой неделе')
                ->descriptionIcon('heroicon-m-arrow-trending-up')
                ->color('success'),
            Stat::make('Новых заказов', Order::today()->count()),
            Stat::make('Средний чек', '₽' . number_format(Order::today()->avg('total') / 100, 0, '.', ' ')),
        ];
    }
}

Кастомные страницы

// Кастомная страница аналитики
class AnalyticsPage extends Page
{
    protected static string $view = 'filament.pages.analytics';
    protected static ?string $navigationLabel = 'Аналитика';
    protected static ?string $navigationIcon = 'heroicon-o-chart-bar';

    public function getViewData(): array
    {
        return [
            'revenueByDay' => Order::revenueByDay(30),
            'topProducts'  => Product::topSelling(10)
        ];
    }
}

Права доступа через Policies

public static function canCreate(): bool
{
    return auth()->user()->can('create', static::getModel());
}

public static function canEdit(Model $record): bool
{
    return auth()->user()->can('update', $record);
}

Multi-tenancy

Filament 3 поддерживает мультитенантность из коробки через концепцию Tenant:

class OrderResource extends Resource
{
    public static function getEloquentQuery(): Builder
    {
        return parent::getEloquentQuery()
            ->whereBelongsTo(Filament::getTenant());
    }
}

Срок разработки: 2–4 недели для панели с 5–10 ресурсами, кастомными виджетами и настроенными правами.