Je suis totalement Joomla Noob et j'essaie de comprendre comment contrôler MVC dans Joomla. J'ai lu this "Développer un composant MVC" dans le tutoriel de base de Joomla et je comprends que le contrôleur principal est situé sous components/com_component/controller.php
& autre fichier est components/com_helloworld/helloworld.php
qui pointe vers controller.php
fichier pour exécuter la demande. La question est, je veux créer un nouveau dossier controller
et mettre tous les controllers
dans ce dossier comme ci-dessous. Comment faire ça?
Tout conseil est vraiment apprécié. Merci beaucoup!!
Je pense que vous confondez le but de votre contrôleur principal/maître (controller.php
) Et de vos sous-contrôleurs (tout dans le dossier /controllers
). Pour plus d'informations à ce sujet, voir the docs .
Le contrôleur principal est généralement utilisé pour faire ce que vous mentionnez dans votre commentaire (rendre une vue basée sur le paramètre view
, généralement spécifié dans l'URL). Dans controller.php
, La fonction qui le fait s'appelle display()
. Donc l'URL suivante:
http://example.com/index.php?option=com_mycomponent&view=test
Cela entraînera l'appel de la fonction display()
dans controller.php
Et chargera la vue test
dans /views/test
.
Les sous-contrôleurs, situés dans le dossier controllers
, sont généralement utilisés pour les tâches CRUD, mais peuvent être appelés facilement à l'aide d'un paramètre d'URL task
. Par exemple:
http://example.com/index.php?option=com_mycomponent&task=test.process
Cela entraînera l'appel de la fonction process()
dans /controllers/test.php
- notez que le paramètre task
est <controllerName>.<functionName>
Vous verrez que cela utilise beaucoup d’activités qui n’ont pas besoin de vue, par exemple dans com_content
Pour publier/archiver/extraire/supprimer des articles (où task
est article.publish
etc., qui signifie que le contrôleur est à controllers/article.php
et à la fonction publish()
, et au lieu d’une vue dédiée, le contrôleur redirige simplement vers la vue liste).
Pour plus d'informations sur la manière dont toutes les pièces Joomla MVC s'emboîtent, voir cet article du wiki .
Bonne chance!
Joomla MVC suit une convention de dénomination pour choisir les noms de fichier et de classe.
This folder holds additional controllers, if needed by the application. /site/controllers/{controllername}.php This file holds the controller class {ComponentName}Controller{ControllerName}. This class must extend the base class JController.
Vous trouvez plus d'informations dans Joomla Docs, ici
Si par tous les contrôleurs vous entendez tout sauf contrôleur.php, alors les placer dans ce dossier fonctionnera parfaitement. Vous appelez un contrôleur spécifique avec la variable de tâche. Par exemple, si vous souhaitez appeler la méthode de sauvegarde du contrôleur de l'employeur, définissez la tâche sur employeur.save.
J'espère que ça aide. Heureux Joomla! Ng