Joomla 4 - $wa->useScript('...') not working

1.3k views Asked by At

I am developing a view for the Joomla 4 component. I am trying to connect the style and script files through the 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');

The assetExists check is performed, but none of the files are included in the <head> of the document. The json file (/media/com_component/joomla.asset.json) contains an asset with my script. What could be the problem?


Sorry for my English

1

There are 1 answers

0
Иван Журавлёв On

I misunderstood the Joomla4 docks. Files of any assets must be located along the path: media/com_component/.. Plus, having looked into the internal components, I corrected the connection. In the end, everything worked :)

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