1vanguard
@1vanguard
Мечтать не вредно, вредно не мечтать

Почему может не работать 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) прописан ассет с моим скриптом. В чём может быть проблема?
  • Вопрос задан
  • 353 просмотра
Пригласить эксперта
Ответы на вопрос 2
@ol_lo
Вы подключили в head следующее?
<head>
    <jdoc:include type="styles" />
    <jdoc:include type="scripts" />
</head>

На всякий случай, документация по Web Assets: Web Assets
Ответ написан
1vanguard
@1vanguard Автор вопроса
Мечтать не вредно, вредно не мечтать
Я неправильно понял доки 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');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы