Joomla 4 - $wa->useScript('...') не работает

Разрабатываю вью для компонента Joomla 4. Пытаюсь подключить файлы стилей и скриптов через WebAssetManager.

use Joomla\CMS\Factory;

$wa = Factory::getApplication()->getDocument()->getWebAssetManager();
$wa->registerScript('com_component.corejs', 'com_component/assets/js/component.js');

if ($wa->assetExists('script', 'com_component.corejs')) {
    var_dump('Script "com_component.corejs" exists!');
}
$wa->useScript('com_component.corejs');

$wa->registerStyle('com_component.corecss', 'com_component/assets/css/component.css', [], ['data-foo' => 'some attribute'], []);
$wa->useStyle('com_component.corecss');

Проверка assetExists выполняется, но не один из файлов не подключается в <head> документа. В json файл (/media/com_component/joomla.asset.json) прописан ассет с моим скриптом. В чём может быть проблема?


Ответы (1 шт):

Автор решения: Иван Журавлёв

Я неправильно понял доки Joomla4. Файлы любых ассетов нужно располагать по пути:

media/com_component/..

Плюс, подсмотрев во внутренние компоненты, подправил подключение.

В итоге всё заработало:

$wa = $this->document->getWebAssetManager();
$wa->getRegistry()->addExtensionRegistryFile('com_component');

$wa->registerStyle('component_styles', 'com_component/component.css', [], [], []);
$wa->useStyle('component_styles');

$wa->registerScript('component_js', 'com_component/component.js');
$wa->useScript('component_js');
→ Ссылка