web-dev-qa-db-fra.com

MVC: inclure des classes dans un composant

Ainsi, par exemple, j'ai 3 classes: Division, Employé, Tâche. Un employé est affecté à chaque tâche et chaque employé appartient à une division. Actuellement, j'ai besoin de 4 vues:

  • une liste des tâches assignées à un employé sélectionné,
  • une liste des employés travaillant sur une tâche sélectionnée,
  • une liste des tâches sur lesquelles un employé d'une division sélectionnée a travaillé,
  • une liste principale qui affichera une liste de tâches avec le nombre d'employés auxquels elle a été affectée.

En dehors de joomla, si je dois obtenir, par exemple, une liste de tâches assignées à un employé, je fais juste quelque chose comme:

$employee = new employee($id_of_employee);
$tasks = $employee->get_tasks();

Alors, quel est le meilleur moyen de l’intégrer à joomla? Puis-je inclure mes cours dans un composant ou je dois le réaménager?

2
Arter Cadelanne

Oui, vous pouvez simplement inclure et instancier vos classes et interagir avec elles de manière autonome PHP comme vous en avez l'habitude - oui ce n'est pas un problème et Joomla ne limite pas votre capacité à cela - ceci Cette approche vous permet moins de réécrire votre code original.

Toutefois, si vous êtes prêt à relever un défi, vous pouvez refactoriser vos classes de code (qui sont en fait des modèles) et créer un modèle qui en prolonge JModelItem que Joomla pourrait utiliser dans ses vues.

Documentation officielle complète pour créer une extension Joomla 3.x est disponible à cet effet.

4
Phil Taylor

Essayez de suivre le code -

require_once(JPATH_SITE_COMPONENT.'/helpers/your.class.php');
YOURCLASS::do();

ou

$instance = new Yourclass();
$instance->do();

Vous pouvez également utiliser une classe statique avec des méthodes héritées telles que:

YOURCLASS::$subclass->do();

Vous pouvez également hériter ou étendre les classes Joomla (consultez la documentation) et veuillez utiliser les fonctions natives de Joomla pour la gestion du courrier ou de la base de données.

Si vous utilisez des fichiers php avec Joomla, veuillez mettre la ligne suivante en haut de chaque fichier pour empêcher tout accès externe à vos scripts:

defined('_JEXEC') or die('Restricted access');
1
Dennis Heiden