Composant avec plusieurs controleurs

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

  • [RÉGLÉ] Composant avec plusieurs controleurs

    Bonjour.

    Je suis encore en apprentissage dans la création de composants Joomla. Je suis en train de développer un composant de slideshow. Le composant requiert seulement la partie backend. J'ai 2 tables: slides et categories.

    Mon problème est que dans l'espace d'administration de Joomla, lorsque je clique sur "Nouveau" pour créer un nouveau slide, le formulaire ne s'affiche pas.

    Voici la vue par défaut:



    Et voici celle qui s'affiche lorsque je clique sur "Nouveau":



    controller.php

    Code PHP:
    defined('_JEXEC') or die('Restricted access');

    jimport('joomla.application.component.controller');

    class 
    SkitterController extends JController
    {
        function 
    display()
        {
            
    $view =& $this->getView('slides''html');
            
    $model =& $this->getModel('slides');
            
    $view->setModel($modeltrue);
            
    $view->display();
        }

    controllers/slides.php

    Code PHP:
    defined'_JEXEC' ) or die( 'Restricted access' );

    class 
    SkitterControllerSlides extends SkitterController
    {
        
    /**
         * constructor (registers additional tasks to methods)
         * @return void
         */
        
    function __construct()
        {
            
    parent::__construct();
            
    $this->registerTask('add''edit');
        }
        
        
    /**
         * display the edit form
         * @return void
         */
        
    function edit()
        {
            
    JRequest::setVar'view''slide' );
            
    JRequest::setVar'layout''form'  );
            
    JRequest::setVar('hidemainmenu'1);

            
    parent::display();
        }

        
    /**
         * save a record (and redirect to main page)
         * @return void
         */
        
    function save()
        {
            
    $model $this->getModel('slide');

            if (
    $model->store($post)) {
                
    $msg JText::_'Slide Saved!' );
            } else {
                
    $msg JText::_'Error Saving Slide' );
            }

            
    // Check the table in so it can be edited.... we are done with it anyway
            
    $link 'index.php?option=com_skitter';
            
    $this->setRedirect($link$msg);
        }

        
    /**
         * remove record(s)
         * @return void
         */
        
    function remove()
        {
            
    $model $this->getModel('slide');
            if(!
    $model->delete()) {
                
    $msg JText::_'Error: One or More Slides Could not be Deleted' );
            } else {
                
    $msg JText::_'Slide(s) Deleted' );
            }

            
    $this->setRedirect'index.php?option=com_skitter'$msg );
        }

        
    /**
         * cancel editing a record
         * @return void
         */
        
    function cancel()
        {
            
    $msg JText::_'Operation Cancelled' );
            
    $this->setRedirect'index.php?option=com_skitter'$msg );
        }

    views/slide/view.html.php

    Code PHP:
    defined('_JEXEC') or die('Restricted access');

    jimport('joomla.application.component.view');

    class 
    SkitterViewSlide extends JView
    {
        function 
    display($tpl null)
        {
            
    $slide =& $this->get('Data');
            
    $isNew = ($slide->id 1);

            
    $text $isNew JText::_('New') : JText::_('Edit');
            
    JToolBarHelper::title(JText::_('Slide').': <small>[ ' $text ' ]</small>');
            
    JToolBarHelper::save();
            if (
    $isNew)  {
                
    JToolBarHelper::cancel();
            } else {
                
    // for existing items the button is renamed `close`
                
    JToolBarHelper::cancel('cancel''Close');
            }

            
    $this->assignRef('slide'$slide);

            
    parent::display($tpl);
        }

    views/slide/tmpl/form.php

    Code PHP:
    <?php defined('_JEXEC') or die('Restricted access'); ?>

    <form action="index.php" method="post" name="adminForm" id="adminForm">
    <div class="col100">
        <fieldset class="adminform">
            <legend><?php echo JText::_'Details' ); ?></legend>

            <table class="admintable">
            <tr>
                <td width="100" align="right" class="key">
                    <label for="greeting">
                        <?php echo JText::_'Label' ); ?>:
                    </label>
                </td>
                <td>
                    <input class="text_area" type="text" name="label" size="32" maxlength="250" value="<?php echo $this->slide->label;?>" />
                </td>
            </tr>
        </table>
        </fieldset>
    </div>
    <div class="clr"></div>

    <input type="hidden" name="option" value="com_skitter" />
    <input type="hidden" name="id" value="<?php echo $this->slide->id?>" />
    <input type="hidden" name="task" value="" />
    <input type="hidden" name="controller" value="slides" />
    </form>
    Comment créer un template Joomla | Comment créer des paramètres de sélection multiple | Sécurisez votre base de données Joomla
    TWITTER: @tomsyweb

  • #2
    Re : Composant avec plusieurs controleurs

    essaye dans le controlleur
    function display()
    {
    parent::display();
    }// function
    Connaitre son ignorance est la meilleure part de la connaissance.

    Commentaire


    • #3
      Re : Composant avec plusieurs controleurs

      si vous utilisez plusieurs controlleur, chaque controlleur exécutera la tache appeler
      Connaitre son ignorance est la meilleure part de la connaissance.

      Commentaire


      • #4
        Re : Composant avec plusieurs controleurs

        Avec ton code, j'ai cette erreur:
        500 - Une erreur est survenue

        View not found [name, type, prefix]: skitter,html,skitterView
        Comment créer un template Joomla | Comment créer des paramètres de sélection multiple | Sécurisez votre base de données Joomla
        TWITTER: @tomsyweb

        Commentaire


        • #5
          Re : Composant avec plusieurs controleurs

          n'oublier pas de mettre le <?php echo JHTML::_( 'form.token' ); ?> dans le formulaire,
          et de tester avant l'execution de tes fonction
          JRequest::checkToken() or jexit( 'Invalid Token' );
          Connaitre son ignorance est la meilleure part de la connaissance.

          Commentaire


          • #6
            Re : Composant avec plusieurs controleurs

            tu as remplacer dans le controller.php
            function display()
            {
            $view =& $this->getView('slides', 'html');
            $model =& $this->getModel('slides');
            $view->setModel($model, true);
            $view->display();
            }

            par
            function display()
            {
            parent::display()}

            et dans ton slide.php ou admin.slide.php ( a la racine de ton composant) tu as

            if( $controller = JRequest::getWord('controller'))
            {
            $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'. php';
            if( file_exists($path))
            {
            require_once $path;
            }
            else
            {
            $controller = '';
            }
            }
            Dernière édition par khadimoukoum à 07/05/2011, 16h43
            Connaitre son ignorance est la meilleure part de la connaissance.

            Commentaire


            • #7
              Re : Composant avec plusieurs controleurs

              admin.skitter.php
              Code PHP:
              defined('_JEXEC') or die('Restricted access');

              require_once(
              JPATH_COMPONENT.DS.'controller.php');

              if (
              $controller JRequest::getWord('controller'))
              {
                  
              $path JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
                  if (
              file_exists($path))
                  {
                      require_once 
              $path;
                  }
                  else
                  {
                      
              $controller '';
                  }
              }

              $classname 'SkitterController'.$controller;
              $controller = new $classname();

              $controller->execute(JRequest::getVar('task'));

              $controller->redirect(); 
              Comment créer un template Joomla | Comment créer des paramètres de sélection multiple | Sécurisez votre base de données Joomla
              TWITTER: @tomsyweb

              Commentaire


              • #8
                Re : Composant avec plusieurs controleurs

                dans ta vue principales views/slides/tmpl/default.php
                tu as specifier le controlleur dans le formulaire
                <input type="hidden" name="controller" value="slides" />
                Connaitre son ignorance est la meilleure part de la connaissance.

                Commentaire


                • #9
                  Re : Composant avec plusieurs controleurs

                  Oui je l'ai fait
                  Comment créer un template Joomla | Comment créer des paramètres de sélection multiple | Sécurisez votre base de données Joomla
                  TWITTER: @tomsyweb

                  Commentaire


                  • #10
                    Re : Composant avec plusieurs controleurs

                    je pense que vous devriez revoir ta vue principales views/slides/tmpl/default.php
                    qui transmet le valeur de id, et de la tache , et le controlleur!

                    <input type="hidden" name="option" value="com_slides" />
                    <input type="hidden" name="task" value="" />
                    <input type="hidden" name="boxchecked" value="0" />
                    <input type="hidden" name="controller" value="slides" />

                    la ca me dépasse, désolé de vous avoir fait perdre votre temps,
                    Connaitre son ignorance est la meilleure part de la connaissance.

                    Commentaire


                    • #11
                      Re : Composant avec plusieurs controleurs

                      J'ai trouvé le problème. Il a fallu que je modifie le fichier controller.php ainsi:

                      Code PHP:
                      defined('_JEXEC') or die('Restricted access');

                      jimport('joomla.application.component.controller');

                      class 
                      SkitterController extends JController
                      {
                          function 
                      display()
                          {
                              
                      $view JRequest::getCmd('view');
                              if(empty(
                      $view)) {
                                  
                      JRequest::setVar('view''slides');
                              };
                              
                              
                      parent::display();
                          }

                      Comment créer un template Joomla | Comment créer des paramètres de sélection multiple | Sécurisez votre base de données Joomla
                      TWITTER: @tomsyweb

                      Commentaire

                      Annonce

                      Réduire
                      1 sur 2 < >

                      C'est [Réglé] et on n'en parle plus ?

                      A quoi ça sert ?
                      La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                      Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                      Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                      Comment ajouter la mention [Réglé] à votre discussion ?
                      1 - Aller sur votre discussion et éditer votre premier message :


                      2 - Cliquer sur la liste déroulante Préfixe.

                      3 - Choisir le préfixe [Réglé].


                      4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                      2 sur 2 < >

                      Assistance au forum - Outil de publication d'infos de votre site

                      Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                      Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                      Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                      UTILISER À VOS PROPRES RISQUES :
                      L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                      Problèmes connus :
                      FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                      Installation :

                      1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                      Archive zip : https://github.com/AFUJ/FPA/zipball/master

                      2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                      3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                      4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                      5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                      6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                      et remplacer www. votresite .com par votre nom de domaine


                      Exemples:
                      Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                      Télécharger le script fpa-fr.php dans: /public_html/
                      Pour executer le script: http://www..com/fpa-fr.php

                      Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                      Télécharger le script fpa-fr.php dans: /public_html/cms/
                      Pour executer le script: http://www..com/cms/fpa-fr.php

                      En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                      Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                      Voir plus
                      Voir moins

                      Partenaire de l'association

                      Réduire

                      Hébergeur Web PlanetHoster
                      Travaille ...
                      X