Данный trait используется для организации работы с подключением ассетов.
Допустим у нас есть класс Form\Element\Select
class Select extends ... implements \SleepingOwl\Admin\Contracts\Initializable
{
use \SleepingOwl\Admin\Traits\Assets;
public function __construct()
{
// Инициализация пакета для хранения ассетов
$this->initializePackage();
...
}
public function initialize()
{
// подключение ассетов в шаблон
$this->includePackage();
...
}
...
}
При подключении трейта класс инициализирует новый пакет через PackageManager
с названием текущего класса, т.е. для класса
выше это будет PackageManager::add('Form\Element\Select')
и при вызове методов трейта withPackage
, addScript
и addStyle
мы добавляем новые
ассеты в данный пакет.
Как мы знаем метод initialize
в классе Form\Element\Select
будет вызван только в момент подключение элемента в форму, а
вместе с ним и ассеты.
Добавленме css файла в пакет
static::addStyle(string $handle, string $style, array $attributes): return self
Добавленме js файла в пакет
static::addScript(string $handle, string $script, array $dependency): return self
Подключение пакета
static::withPackage(string|array $packages): return self