Перейти до вмісту
en English

Версія v1.6.5 Попередні версії: документація на GitHub

Розширення: огляд

На цій сторінці

Панель розширюється на двох рівнях:

  • PHP-класи, які ви вже наслідуєте в застосунку (Entity, дії, фільтри, метрики, події). Для них не потрібен JavaScript, а сторінки нижче описують кожен.
  • Публічний API розширень (з 1.5): власні Vue-компоненти полів, карток, фільтрів і сторінок меню, власні маршрути й переклади, перевизначення інтерфейсу вбудованих компонентів. Розширення є Composer-пакетом (або каталогом у застосунку) і підключається без перезбирання панелі. Посібник: Розширення: публічний API.

Що можна розширювати

Що Базовий клас чи API Розділ
Entity Maxcxam\Larsadmin\Entity Сутності
Дія Maxcxam\Larsadmin\Actions\Action Дії
Фільтр Maxcxam\Larsadmin\Filters\Filter Фільтри
Метрика Maxcxam\Larsadmin\Metrics\Value, Trend, Partition, Progress Метрики
Дашборд Maxcxam\Larsadmin\Dashboards\Dashboard Дашборди
Видалення запису з файлами Entity::deleteRecord(Request) у власних діях Файли й зображення
Глобальний пошук через Scout Entity::usesScout(), Entity::scoutQuery() Глобальний пошук
Реакція на записи журналу аудиту подія Maxcxam\Larsadmin\Events\AuditRecorded Журнал аудиту
Сповіщення в дзвіночку панелі Maxcxam\Larsadmin\Notifications\LarsadminNotification (можна наслідувати) Сповіщення
Фонова дія Action::$queued, queued(), onQueue(), onQueueConnection(), $timeout Сповіщення: фонові дії
Реакція на завершення фонової дії подія Maxcxam\Larsadmin\Events\ActionRunFinished, модель Maxcxam\Larsadmin\Actions\Queued\ActionRun (лише читання) Сповіщення
Поле з вбудованим компонентом Maxcxam\Larsadmin\Fields\Field нижче
Поле з власним Vue-компонентом Field + defineExtension({ fields }) Власні поля
Картка (статична чи з даними) Maxcxam\Larsadmin\Metrics\Card, DataCard Картки
Фільтр з власним компонентом Filter + defineExtension({ filters }) Фільтри
Сторінка в меню Maxcxam\Larsadmin\Tools\Tool Tools
Власні HTTP-маршрути Larsadmin::routes(), findRecord(), findField(), audited() Маршрути розширення
Інтерфейс вбудованого поля, фільтра чи метрики override: true Перевизначення

Поле з вбудованим компонентом

Власний клас поля, який лише змінює серверну поведінку (правила, заповнення, форматування), може використовувати компонент одного з вбудованих полів. Наприклад, спадкоємець Text використовує text-field:

use Maxcxam\Larsadmin\Fields\Text;

class Slug extends Text
{
    protected function formatForDisplay(mixed $value): mixed
    {
        return $value === null ? null : '/'.$value;
    }
}

З 1.5 захищені хуки Field (resolveValue(), formatForDisplay(), fillValue(), fillString(), typeRules(), implicitRules(), acceptsNullInput(), defaultAlign()), публічні хуки й jsonSerialize() є стабільним API для спадкоємців (повний список у Власних полях). Поле з власним Vue-компонентом описано там само.

Власні поля з масивом і форми з файлами

Форма, у якій є поле File чи Image або поле з multipart: true (див. Поля, що надсилають файли), надсилається як multipart/form-data (див. Файли й зображення). У такому запиті порожній масив не передається зовсім: якщо користувач очистив власне поле, значення якого масив, ключ поля відсутній, і fill() лишає старе значення. У JSON-формі без таких полів те саме поле отримує []. Вбудовані поля це не зачіпає. Якщо ваше поле приймає масив, або надсилайте разом з ним прапорець присутності (як present у полів файлів), або вважайте відсутній ключ порожнім масивом.

Реєстр компонентів

Серверний ключ component поля, фільтра чи картки зіставляється з Vue-компонентом через реєстр панелі. З 1.5 реєстр відкритий для розширень через defineExtension() модуля larsadmin, а вбудовані компоненти реєструються в ньому тим самим механізмом. Внутрішні функції registerField, registerFilter і registerCard лишилися обгортками й API не є.

Як панель обробляє ключ:

Ключ Поведінка
вбудований (text-field, select-filter, …) вбудований компонент або його перевизначення
vendor/name, зареєстрований розширенням компонент розширення
vendor/name, не зареєстрований (розширення не завантажилося, несумісне чи впало) placeholder «Недоступно»; у формі значення не надсилається (fail closed)
без /, невідомий панелі поле як звичайний текст (display) і текстовий input (форма), фільтр як select, як у 1.4; картка показує помилку «Невідомий компонент картки: …»

Ключі вбудованих компонентів:

Тип Ключі
Поля id-field, text-field, textarea-field, number-field, boolean-field, select-field, date-field, datetime-field, password-field, file-field, image-field, belongs-to-field, has-many-field, belongs-to-many-field
Фільтри select-filter, boolean-filter, date-range-filter
Картки value-metric, trend-metric, partition-metric, progress-metric

Як зібрати й протестувати сам пакет: розділ «Розробка пакета» в Встановлення.

Далі: Інтерфейс списків.

Введіть запит, щоб шукати в усіх посібниках. ↑ ↓ — вибір, Enter — відкрити.