Bonsoir,
J'en suis à mes débuts en développement sur joomla et le modèle MVC n'a jamais été ma tasse de thé.
Je vais essayer de bien décrire mon "problème" peut-être que quelqu'un aura une réponse (c'est sûrement très bête).
D'abord remettons-nous dans le contexte et parlons du besoin. Il s'agit de créer un composant et un module pour une boutique en ligne de pièces automobile.
Je réalise donc le composant permettant de filtrer les produits. Par exemple :
- Je choisis une marque : Peugeot
- Je choisis un modèle : 207
- Je choisis une motorisation : Diesel
- Je choisis une année : 2010
- Je valide et on me donne la liste des produit qui peuvent correspondre à mon véhicule.
J'ai donc deux grosse parties. Une partie qui gère les critères (ils sont dynamiques). A savoir "marque", "modèle", "année", "motorisation" etc. Une partie qui gère les "données" de ces critères dynamiques ainsi que la notion de relation (marque : peugeot, renault, etc / modèle : 206, 207, 306, 307, laguna, mégane, etc). Les relations c'est pouvoir définir l'association de la marque "Peugeot" aux modèles 206, 207, 306, 307 etc.
Jusque la c'est très simple.
Un seul et même composant doit gérer ces deux parties. Appelons les partie1 et partie2 (difficile n'est ce pas ?).
Côté partie 1 j'ai :
- du listing de critère (pour voir les critères déjà créés)
- de la création de critère
- de l'édition de critère
- de la suppression de critère
Côté partie 2 j'ai :
- du listing de valeur (pour voir les valeurs déjà créés)
- de la création de valeur
- de l'édition de valeur
- de la suppression de valeur
Je voudrais réussir à faire quelque chose comme :
J'ai alors un premier problème. Comment faire, côté contrôleur, pour définir le template "list" au lieu de "default" qui est appelé par défaut (comme son nom l'indique) par le contrôleur. J'ai pourtant créé, dans ce dernier, une méthode "categories" et le lien d'appel de mon composant est bien "option=com_mycomponent&task=partie1&type=partie1" . Joomla devrait donc exécuter la méthode "partie1" du contrôleur "partie1" non ?!
Ensuite, dans la méthode edit() de mon contrôleur j'ai tenté quelque chose comme :
Seulement, si je fais un appel à la méthode "test()" j'ai l'impression que joomla ne balance aucun argument me permettant d'éditer ma catégorie.
Mon problème est donc que pour deux "actions" différentes (un listing et une édition) je n'arrive à utiliser qu'une méthode dans la vue (view.html.php) à savoir "display". La question est alors : comment séparer la logique du listing (récupération des données en SGBD, attribution des valeurs au template pour génération de la liste) de la logique de l'édition (récupération des valeurs de l'id édité, remplissage des champs de formulaire avec ces valeurs, etc) ?!
Évidemment j'ai parcouru plusieurs tutoriaux et ceux-ci restent très bref sur le modèle MVC et du coup je n'ai pas trouvé d'exemple concret de ce que je veux faire.
En faites, je veux éviter de me retrouver avec une arborescence comme :
Je vous remercie d'avance pour vos réponses
J'en suis à mes débuts en développement sur joomla et le modèle MVC n'a jamais été ma tasse de thé.
Je vais essayer de bien décrire mon "problème" peut-être que quelqu'un aura une réponse (c'est sûrement très bête).
D'abord remettons-nous dans le contexte et parlons du besoin. Il s'agit de créer un composant et un module pour une boutique en ligne de pièces automobile.
Je réalise donc le composant permettant de filtrer les produits. Par exemple :
- Je choisis une marque : Peugeot
- Je choisis un modèle : 207
- Je choisis une motorisation : Diesel
- Je choisis une année : 2010
- Je valide et on me donne la liste des produit qui peuvent correspondre à mon véhicule.
J'ai donc deux grosse parties. Une partie qui gère les critères (ils sont dynamiques). A savoir "marque", "modèle", "année", "motorisation" etc. Une partie qui gère les "données" de ces critères dynamiques ainsi que la notion de relation (marque : peugeot, renault, etc / modèle : 206, 207, 306, 307, laguna, mégane, etc). Les relations c'est pouvoir définir l'association de la marque "Peugeot" aux modèles 206, 207, 306, 307 etc.
Jusque la c'est très simple.
Un seul et même composant doit gérer ces deux parties. Appelons les partie1 et partie2 (difficile n'est ce pas ?).
Côté partie 1 j'ai :
- du listing de critère (pour voir les critères déjà créés)
- de la création de critère
- de l'édition de critère
- de la suppression de critère
Côté partie 2 j'ai :
- du listing de valeur (pour voir les valeurs déjà créés)
- de la création de valeur
- de l'édition de valeur
- de la suppression de valeur
Je voudrais réussir à faire quelque chose comme :
Code:
-dossier "views" de partie1 : view.html.php tmpl |_ list.php |_ edit.php
Ensuite, dans la méthode edit() de mon contrôleur j'ai tenté quelque chose comme :
Code PHP:
function edit()
{
JRequest::setVar('view', 'categories');
JRequest::setVar('layout', 'new_and_edit');
JRequest::setVar('hidemainmenu', 1);
$view = & $this->getView('categories', 'html');
$view->test();
// parent::display();
}
Mon problème est donc que pour deux "actions" différentes (un listing et une édition) je n'arrive à utiliser qu'une méthode dans la vue (view.html.php) à savoir "display". La question est alors : comment séparer la logique du listing (récupération des données en SGBD, attribution des valeurs au template pour génération de la liste) de la logique de l'édition (récupération des valeurs de l'id édité, remplissage des champs de formulaire avec ces valeurs, etc) ?!
Évidemment j'ai parcouru plusieurs tutoriaux et ceux-ci restent très bref sur le modèle MVC et du coup je n'ai pas trouvé d'exemple concret de ce que je veux faire.
En faites, je veux éviter de me retrouver avec une arborescence comme :
Code:
-dossier "views" : partie1list | |_ view.html.php |_ tmpl |_ default.php partie1edit | |_ view.html.php |_ tmpl |_ default.php
Commentaire