web-dev-qa-db-fra.com

Remplacement de JSubmenuHelper par JHtmlSidebar / menu Administratif dans Joomla 4

Je me suis demandé comment ajouter des liens à toutes les vues de mon composant dans le tout nouveau backend brillant Joomla4; J'avais l'habitude de le faire via JSubmenuHelper, mais celui-ci, apparemment obsolète également auparavant, a maintenant été complètement supprimé.

J'ai essayé ce qui est mentionné ici: Comment appliquer JHtmlSidebar pour ajouter une barre latérale à ma vue administrateur? , c'est-à-dire que dans les vues, j'appelle d'abord la fonction addSubmenu de l'assistant JHtmlSidebar :: addEntry), puis JHtmlSidebar :: render dans mon view.html.php (dans la méthode d'affichage de la classe dérivée de JViewLegacy).

Mais je ne reçois aucune entrée de menu pour mon composant. La vue "par défaut" s’affiche correctement, mais je n’obtiens pas d’entrées de sous-menu ou d’onglets menant vers les autres vues de mon composant. Il n'y a pas d'erreur dans le navigateur ou dans les journaux. Je n'ai tout simplement aucune indication sur le sous-menu de gauche. Edit: je ne l’obtiens pas aussi avec JHtmlSidebar en J3. Il doit y avoir quelque chose qui me manque. Voici mon code: Dans le view.html.php:

class mycomponentViewblocklist extends JViewLegacy
{
  function display($tpl = null) {
    // other stuff...
    mycomponentHelper::addSubmenu('myview');
    $this->addToolBar();
    $this->sidebar = JHtmlSidebar::render();
    parent::display($tpl);
}

Dans helpers/mycomponent.php:

class mycomponentHelper extends JHelperContent
{
  public static function addSubmenu($vName)
  {
    JHtmlSidebar::addEntry(
        JText::_('COM_MYCOMPONENT_SUBMENU_MYVIEW'),
        'index.php?option=com_mycomponent&view=myview',
        $vName == 'myview'
    );
    // ...

Cela ne fonctionne pas dans J3 et J4, l'utilisation de JSubMenuHelper :: addEntry au lieu de JHtmlSidebar :: addEntry fonctionne dans J3. Quoi d'autre est requis? Dois-je ajouter quelque chose dans mon dossier tmpl?

Je ne vois aucune différence évidente par rapport à ce que je fais par rapport au composant com_banner, qui obtient un sous-menu de Nice avec ses quatre vues sous forme d'entrées de lien (edit: voir ma réponse ci-dessous à propos du sous-menu; j'ai mal compris d'où cela venait. de, mais il a aussi une belle barre latérale à gauche en plus du sous-menu).

Malgré l’annonce de Joomla4, jusqu’à présent, j’ai vu relativement peu de guides de migration pour les composants J3/J2, est-ce que quelqu'un pourrait me guider dans cette direction, si cela pouvait aider le problème ici?

4
codeling

Finalement, j'ai compris - mon problème est un espace réservé manquant dans le tmpl (qui n'était pas requis pour JSubMenuHelper). Ajouté ceci à mon tmpl/default.php, cela fonctionne maintenant:

<div id="j-sidebar-container" class="span2">
    <?php echo $this->sidebar; ?>
</div>

Le sous-menu dans les bannières sur lequel je m'interrogeais est en fait créé via le fichier manifeste, il y a des entrées comme celle-ci:

<administration>
  <menu img="class:banners">com_banners</menu>
  <submenu>
    <!--
      Note that all & must be escaped to &amp; for the file to be valid
      XML and be parsed by the installer
    -->
    <menu
      link="option=com_banners"
      view="banners"
      img="class:banners"
      alt="Banners/Banners"
      >
      com_banners_banners
    </menu>
    <menu
      link="option=com_categories&amp;extension=com_banners"
      view="categories"
      img="class:banners-cat"
      alt="Banners/Categories"
      >
      com_banners_categories
    </menu>
    ...

Ceux-ci sont responsables de la création du sous-menu à la fois dans J3 et J4.

2
codeling