web-dev-qa-db-fra.com

Comment utiliser HTMLHelper pour ajouter à la tête du document

Dans cet article: Comment ajouter CSS/JS/une image à un module backend @lodder me montre comment utiliser HTMLHelper pour ajouter CSS et JavaScript.

Auparavant, j'avais suivi le Joomla! documentation https://docs.joomla.org/Adding_JavaScript qui suggère d'utiliser addScript()

Dans l'exemple de Lodder, il utilise un form field Puis un getInput donc je me suis demandé si cela faisait une différence. Je suis désireux d'apprendre la bonne façon de faire avancer les choses et je sais l'espace de noms est ce que je devrais utiliser comme bonne habitude.

Ma question est au lieu d'utiliser JHhtml pour des choses comme

JHtml::script('jui/jquery.min.js', false, true);

pour charger jQuery en premier, puis-je faire maintenant

HTMLHelper::_('script', 'jui/jquery.min.js', false, true);

Et deuxièmement, au lieu d'ajouter à l'en-tête du document comme ceci:

$document = JFactory::getDocument();
$document->addScript($mediaUrl . '/js/' . $moduleName . ".js",
  "text/javascript", true, false, array('version' => 'auto'));

Puis-je le faire comme ça?

$document = JFactory::getDocument();
$document->HTMLHelper::_('script', 'jui/jquery.min.js', false, true);
3
Eoin

1) JHtml est un alias pour la classe Joomla\CMS\HTML\HTMLHelper. Vous devrez commencer à utiliser la vraie classe tôt ou tard car l'alias n'existera pas dans Joomla! 5.0. Pour utiliser la vraie classe, vous devez soit l'importer:

use Joomla\CMS\HTML\HTMLHelper;

HTMLHelper::doSomething();
HTMLHelper::doSomethingElse();

Ou utilisez un nom de classe complet:

\Joomla\CMS\HTML\HTMLHelper::doSomething();
\Joomla\CMS\HTML\HTMLHelper::doSomethingElse();

2) Non, cela ne fonctionne pas. L'objet document n'a pas de propriété appelée HTMLHelper. Utilisez l'une des méthodes indiquées ci-dessus.

Remarque, vous pouvez utiliser HTMLHelper::_('jquery.framework') pour ajouter le noyau jQuery.

4
Sharky