web-dev-qa-db-fra.com

Plusieurs contrôleurs dans Joomla

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? Controllers folder

Tout conseil est vraiment apprécié. Merci beaucoup!!

4
SonDang

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!

9
codinghands

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

2
Anibal

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

1
Mathew Lenning