Découverte du fonctionnement de J4 (article en cours de rédaction)

Dans les composants natifs de J4, on ne trouve plus les controlers, ni les models de J3.

Voici comment le nouveau système fonctionne (dans l'exemple j'utiliserai com_content / les articles de Joomla) :

Dans le cas de l'admin l'application passe par :

  • /librairies/src/Application/CMSApplication.php methode execute
  • /librairies/src/Application/AdministratorApplication.php methode doExecute
  • /librairies/src/Application/AdministratorApplication.php methode dispatch
  • /librairies/src/Component/ComponentHelper.php methode renderComponent
  • /librairies/src/Dispatcher/ComponentDispatcher.php methode dispatch

Cette dernière méthode, regarde si un contrôleur a été défini en variable http ('controller'), si non regarde s'il existe un controller spécifique au composant courant (com_content par exemple) pour l'application cliente courante (Administrator par exemple).

En même temps elle indique les chemins d'accès possibles à la vue (par exemple D:\apache\\web\\joomla4.tests2\\www\administrator/components/com_content\views

Si un contrôleur spécifique n'existe pas dans le composant, c'est le contrôleur /librairies/src/MVC/Controller/BaseController.php méthode execute($task) qui est lancée.

Dans le cas de com_content, si la tache ($task) est diplay (implicite) on appelle donc la méthode display de /administrator/components/com_content/src/Controller/Displaycontroller.php
qui appellera la méthode parente display de /librairies/src/MVC/Controller/BaseController.php.

La méthode parente cherchera le model Joomla\\Component\\Content\\Administrator\\Model\\ArticlesModel

Toujours dans le cas de com_content la vue sera en /administrator/components/com_content/src/Views/Articles/HtmlView.php

Et le model en /administrator/components/com_content/src/Model/ArticlesModel.php

Et les templates en /administrator/components/com_content/tmpl/articles/

...