lien entre un module et un composant

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] lien entre un module et un composant

    Bonjour,

    J'ai un problème de compréhension au niveau du controller d'un composant (je pense).

    J'ai construit un module qui permet la saisie de deux champs date et d'un bouton "valider". Valider permet d'envoyer les champs date vers un composant qui affiche les articles publies entre les deux dates.

    Je parviens a ce fonctionnement, seulement je ne respecte pas du tout le MVC.

    En fait, mon module dispose d un formulaire qui envoie les elements suivants (en plus des dates):
    Code:
            <input type="hidden" name="option" value="com_affichearticle" />
            <input type="hidden" name="task" value="show" />
            <input type="hidden" name="controller" value="" />
    Dans le composant com_affichearticle, j'ai le fichier controller.php dans lequel j'ai la fonction show qui contruit le tableau des articles et l'affiche en partie centrale de mon site (local). Tout le code est dans cette fonction et dans ce fichier.
    Je pense qu'il faudrait faire appel à la fonction display du controller pour pour voir utiliser le MVC correctement. Mais comment faire ?

    Merci de vos pistes
    Dernière édition par juillet à 13/09/2012, 16h47

  • #2
    Re : lien entre un module et un composant

    quelques éléments de mes avancées...
    Un composant peut biensur avoir plusieurs controller. Dans ce cas, on construit l'arborescence en conséquence:

    Code:
    /com_affichearticle/controllers/show.php
    pour appeler ce controller, j'utilise le lien :
    Code:
    $link = JROUTE::_('index.php?option=com_affichearticle&controller=show&task=show');
    ou je fais un formulaire
    Code:
    i        <input type="hidden" name="option" value="com_affichearticle" />
            <input type="hidden" name="task" value="show" />
            <input type="hidden" name="controller" value="show" />
    (j'utilise le lien pour mes tests)

    Dans le fichier controllers/show.php j'ai:
    Code:
    <?php
    defined('_JEXEC') or die;
    
    jimport('joomla.application.component.controllerform');
    
    class AffichearticleControllerShow extends JControllerForm
            {
    
    
           public function show()
                    {
                    echo 'icicicicicicicicci';exit();
                    }
    Je pense être plus prêt des bonnes pratiques que ce que j'ai pu faire auparavant. Toutefois, ça ne marche pas. J'ai une erreur 500
    Code:
    1		JSite->dispatch()		/var/www/test4/index.php:43	
    2		JComponentHelper::renderComponent()		/var/www/test4/includes/application.php:191	
    3		require_once()		/var/www/test4/libraries/joomla/application/component/helper.php:156	
    4		JController->execute()		/var/www/test4/components/com_affichearticle/affichearticle.php:31	
    5		EmailarticlesController->display()		/var/www/test4/libraries/joomla/application/component/controller.php:684	
    6		JController->display()		/var/www/test4/components/com_affichearticle/controller.php:32	
    7		JController->getView()		/var/www/test4/libraries/joomla/application/component/controller.php:608	
    8		JError::raiseError()		/var/www/test4/libraries/joomla/application/component/controller.php:812	
    9		JError::raise()		/var/www/test4/libraries/joomla/error/error.php:250
    Manifestement je ne vais pas dans le contrôleur "show".

    Je n'ai pas fait le modele et la vue associés, mais l'erreur ne vient pas de là. Une idée sur ce que je loupe ? ...

    Commentaire


    • #3
      Re : lien entre un module et un composant

      Yes !
      je ne sais pas trop ou était mon erreur, une erreur de typo sans doute (j'ai repris mes fichier en changeant le nom du controleur et de l'action pour ne pas me mélanger dans tous mes tests) et finalement ça marche ! Je n'ai rien changé à la démarche décrite ci-dessus. Je vais à présent finaliser avec le model et la vue.

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X