<? phpukraine ДОКУМЕНТАЦІЯ
⌕Пошук по платформі
Документація українською

Переклад офіційної документації українською. Кожен розділ показує стан готовності: недоперекладене позначене відкрито, а не приховане.

ВЕРСІЯ
АКТУАЛЬНА Актуальний реліз. Переклад наздоганяє оригінал, розділи з низьким відсотком позначені у змісті.
РЕСУРСИ · ПЕРЕКЛАДЕНО оновлено 29 вересня 2026

Перегляд записів · Filament

Створення ресурсу зі сторінкою View

Щоб створити новий ресурс зі сторінкою View, скористайтеся прапорцем --view:

php artisan make:filament-resource User --view

Використання infolist замість вимкненої форми

Типово сторінка View показує вимкнену форму з даними запису. Якщо ви хочете показати дані запису в «infolist», визначте в класі ресурсу метод infolist():

use Filament\Infolists;
use Filament\Schemas\Schema;

public static function infolist(Schema $schema): Schema
{
    return $schema
        ->components([
            Infolists\Components\TextEntry::make('name'),
            Infolists\Components\TextEntry::make('email'),
            Infolists\Components\TextEntry::make('notes')
                ->columnSpanFull(),
        ]);
}

Метод components() визначає структуру infolist. Це масив записів і компонентів розмітки у тому порядку, в якому вони мають зʼявлятися в infolist.

Як будувати infolist у Filament, описано в посібнику з документації Infolists.

Додавання сторінки View до наявного ресурсу

Щоб додати сторінку View до наявного ресурсу, створіть нову сторінку в теці Pages цього ресурсу:

php artisan make:filament-page ViewUser --resource=UserResource --type=ViewRecord

Нову сторінку потрібно зареєструвати в методі getPages() ресурсу:

public static function getPages(): array
{
    return [
        'index' => Pages\ListUsers::route('/'),
        'create' => Pages\CreateUser::route('/create'),
        'view' => Pages\ViewUser::route('/{record}'),
        'edit' => Pages\EditUser::route('/{record}/edit'),
    ];
}

Перегляд записів у модальних вікнах

Якщо ресурс простий, записи можна переглядати в модальних вікнах, а не на сторінці View. У такому разі достатньо видалити сторінку view.

Якщо в ресурсі немає ViewAction, додайте її до масиву $table->recordActions():

use Filament\Actions\ViewAction;
use Filament\Tables\Table;

public static function table(Table $table): Table
{
    return $table
        ->columns([
            // ...
        ])
        ->recordActions([
            ViewAction::make(),
            // ...
        ]);
}

Зміна даних перед заповненням форми

Дані запису можна змінити до того, як вони потраплять у форму. Для цього визначте в класі сторінки View метод mutateFormDataBeforeFill(), який змінює масив $data і повертає змінену версію перед заповненням форми:

protected function mutateFormDataBeforeFill(array $data): array
{
    $data['user_id'] = auth()->id();

    return $data;
}

Якщо ж ви переглядаєте записи в модальній дії, дивіться документацію Actions.

Хуки життєвого циклу

Хуки дозволяють виконати код у різних точках життєвого циклу сторінки, наприклад перед заповненням форми. Щоб налаштувати хук, створіть у класі сторінки View protected-метод з назвою хука:

use Filament\Resources\Pages\ViewRecord;

class ViewUser extends ViewRecord
{
    // ...

    protected function beforeFill(): void
    {
        // Виконується перед тим, як вимкнені поля форми заповнюються з бази даних. Не виконується на сторінках з infolist.
    }

    protected function afterFill(): void
    {
        // Виконується після того, як вимкнені поля форми заповнено з бази даних. Не виконується на сторінках з infolist.
    }
}

Визначення хуків життєвого циклу в трейтах

Щоб визначити хук життєвого циклу в трейті, додайте до назви хука суфікс з назвою трейта. Це відповідає угоді boot{TraitName}() з Eloquent і угоді mount{TraitName}() з Livewire: багаторазові трейти можуть вбудовуватися в життєвий цикл сторінки, не конфліктуючи з хуками, визначеними на самій сторінці:

use Filament\Resources\Pages\ViewRecord;

trait LoadsAuditData
{
    protected function afterFillLoadsAuditData(): void
    {
        // Виконується після заповнення полів форми з бази даних, на додачу
        // до хука на сторінці.
    }
}

class ViewUser extends ViewRecord
{
    use LoadsAuditData;

    protected function afterFill(): void
    {
        // Викликаються обидва хуки життєвого циклу.
    }
}

Спершу викликається власний хук сторінки, далі хук кожного трейта. Хуки з трейтів, які використовуються всередині інших трейтів, теж викликаються. Хуки трейтів викликаються автоматично, тому не варто додатково викликати їх із власного хука сторінки.

Авторизація

Для авторизації Filament враховує будь-які політики моделей, зареєстровані у вашому застосунку.

Користувач отримує доступ до сторінки View, якщо метод view() політики моделі повертає true.

Створення ще однієї сторінки View

Однієї сторінки View може бракувати, коли інформації багато і по ній треба зручно переміщатися. Для ресурсу можна створити скільки завгодно сторінок View. Це особливо корисно, якщо ви використовуєте підменю ресурсу: тоді перемикатися між різними сторінками View просто.

Щоб створити сторінку View, скористайтеся командою make:filament-page:

php artisan make:filament-page ViewCustomerContact --resource=CustomerResource --type=ViewRecord

Нову сторінку потрібно зареєструвати в методі getPages() ресурсу:

public static function getPages(): array
{
    return [
        'index' => Pages\ListCustomers::route('/'),
        'create' => Pages\CreateCustomer::route('/create'),
        'view' => Pages\ViewCustomer::route('/{record}'),
        'view-contact' => Pages\ViewCustomerContact::route('/{record}/contact'),
        'edit' => Pages\EditCustomer::route('/{record}/edit'),
    ];
}

Тепер для цієї сторінки можна визначити infolist() або form() з іншими компонентами, яких немає на основній сторінці View:

use Filament\Schemas\Schema;

public function infolist(Schema $schema): Schema
{
    return $schema
        ->components([
            // ...
        ]);
}

Налаштування менеджерів звʼязків для конкретної сторінки view

Ви можете вказати, які менеджери звʼязків мають зʼявлятися на сторінці view, визначивши метод getAllRelationManagers():

protected function getAllRelationManagers(): array
{
    return [
        CustomerAddressesRelationManager::class,
        CustomerContactsRelationManager::class,
    ];
}

Це корисно, коли у вас кілька сторінок view і на кожній потрібні різні менеджери звʼязків:

// ViewCustomer.php
protected function getAllRelationManagers(): array
{
    return [
        RelationManagers\OrdersRelationManager::class,
        RelationManagers\SubscriptionsRelationManager::class,
    ];
}

// ViewCustomerContact.php 
protected function getAllRelationManagers(): array
{
    return [
        RelationManagers\ContactsRelationManager::class,
        RelationManagers\AddressesRelationManager::class,
    ];
}

Якщо getAllRelationManagers() не визначено, використовуються менеджери звʼязків, визначені в ресурсі.

Додавання сторінок view до підменю ресурсу

Якщо ви використовуєте підменю ресурсу, зареєструйте цю сторінку у звичний спосіб у методі getRecordSubNavigation() ресурсу:

use App\Filament\Resources\Customers\Pages;
use Filament\Resources\Pages\Page;

public static function getRecordSubNavigation(Page $page): array
{
    return $page->generateNavigationItems([
        // ...
        Pages\ViewCustomerContact::class,
    ]);
}

Власний вміст сторінки

Кожна сторінка у Filament має власну схему, яка задає загальну структуру і вміст. Схему сторінки можна перевизначити, оголосивши на ній метод content(). Типово метод content() сторінки View містить такі компоненти:

use Filament\Schemas\Schema;

public function content(Schema $schema): Schema
{
    return $schema
        ->components([
            $this->hasInfolist() // Цей метод повертає `true`, якщо на сторінці визначено infolist
                ? $this->getInfolistContentComponent() // Цей метод повертає компонент для показу infolist, визначеного в цьому ресурсі
                : $this->getFormContentComponent(), // Цей метод повертає компонент для показу форми, визначеної в цьому ресурсі
            $this->getRelationManagersContentComponent(), // Цей метод повертає компонент для показу менеджерів звʼязків, визначених у цьому ресурсі
        ]);
}

У масив components() можна вставити будь-який компонент схеми. Компоненти можна переставляти, змінюючи порядок елементів масиву, або прибирати ті, що не потрібні.

Використання власного Blade-представлення

Для ще тоншого налаштування перевизначте статичну властивість $view класу сторінки, вказавши власне представлення у вашому застосунку:

protected string $view = 'filament.resources.users.pages.view-user';

Тут передбачається, що ви створили представлення за шляхом resources/views/filament/resources/users/pages/view-user.blade.php:

<x-filament-panels::page>
    {{-- `$this->getRecord()` поверне поточний Eloquent-запис для цієї сторінки --}}
    
    {{ $this->content }} {{-- Це відрендерить вміст сторінки, визначений у методі `content()`; можна прибрати, якщо хочете почати з нуля --}}
</x-filament-panels::page>
Стан перекладу

Перекладаємо з офіційної документації, розділ за розділом, і не ховаємо недоперекладене. Помітили неточність у терміні чи реченні: напишіть, виправимо.

47%
Готовності
0
У роботі
17
Ще не перекладено
Глосарій термінів