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');