Introduction

Dans la phase précédente (voir l'article correspondant...), vous avez restructuré l'ensemble de votre code et son arborescence, afin qu'elle soit compatible avec le MVC de Joomla4 et 5.

Les tests de fonctionnement du site étant réalisé et concluants, nous allons maintenant passer en mode MVC Joomla 4/5.

Article en cours de rédaction...

 

Deux chose sont maintenant à faire :

"Ecapsuler" votre extension dans un conteneur avec les services qu'il utilisera :

  • administrator/components/moncomponent/services/provider.php

Definir le nouveau point d'entrée de votre composant

Ce dernier sera dorenavant plus :

  • /components/moncomposant.php pour le front
  • /administrator/componants/moncomposant.php pour l'admin

mais

  • components/moncomponent/src/Extension/MoncomponsantComponent.php pour le front
  • administrator/components/moncomponent/src/Extension/MoncomponsantComponent.php pour l'admin

Le "provider" (fournisseur de services)

Voir aussi, l'article correspondant du "book" deNikolaos Dionysopoulos...

La présence du fichier administrator/components/moncomponent/services/provider.php permettra à Joomla de savoir que votre composant est écrit en mode Joomla MVC 4 et 5.

 On s'inspirera de l'axemble de l'ouvrage cité ci-dessus, sinon d'un fichier provider d'une extension native de joomla (com_content ou com_contact pas exemple).

 Le point d'entrée (La classe générale de votre composant)

 Voir aussi, l'article correspondant du "book" deNikolaos Dionysopoulos...

Il se situe en /administrator/components/com_moncomposant/src/Extension/MoncomposantComponent.php

C'est la ca&lsse principale de votre composant, necessaire.

Le controleur géneral

le fichier controller.php à la racine de votre composant est supprimé et remplacé par src/Dispatcher/Dispatcher.php

Voir aussi, l'article correspondant du "book" deNikolaos Dionysopoulos ...

En général, il n'est pas nécessaire, la classe mère, le dispatcheur de Joomla4 sera suffisant.

Les services complementaires

La gestion des catéogiries et du routeur differents un peu de Joomla MVC3 et nécessitent des fichiers en /components/com_moncomposant/src/Service

Les Categories

Normalement elles ont déjà été traitées (voir article précedent)

Le router

Il faudra certainement réécrire les regles.

L'ancien router en /components/com_moncomposant/router.php

Le nouveau sera en components/com_moncomposant/src/Service/Router.php

On lui donnera son namespace Masociete\Component\Moncomposant\Site\Service

On se referera au router d'un composant natif de Joomla ou à l'article correspondant du "book" deNikolaos Dionysopoulos ...

Les classes sous Joomla3 sont généralement préfixées (tables, model).

Tant que l'on reste en mode legacy (MVC Joomla3), il faura maintenir ces prefixes (methodes getModel des controleurs, ou appel des classes de Table (anciennes métodes Table::getInstance),

Par contre quand on passera en mode natif MVC Joomla4 et +, lors des appels vu que l'on travaillera dans un conteneur identifiant déjà l'extession, et que les prefixe des noms de classes ne sont plus nécessaire (et ont été supprimés), la notion de prefixe identifiera l'application (Administrator ou Site par exemple).

Les Controlleurs

Attention aux methodes getModel de vos controlleurs.