Administration d'un composant maison

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

  • [RÉGLÉ] Administration d'un composant maison

    J'essaie de créer un petit composant maison, mais je buttes depuis quelques heures sur un bug et je ne vois par où il surgit.

    Quand j'essaie de publier ou dépublier j'obtiens toujours une erreur 404.

    Je suis partit d'un composant de sarki : ckforms.

    Je ne sais pas par où commencer pour trouver la source de ce 404.
    Auriez-vous été déjà confronté à ce souci ?

    Merci d'avance.

  • #2
    Re : Administration d'un composant maison

    Bonjour,

    Il doit manquer une méthode dans l'admin de ton composant, ou la méthode est routée de manière incorrecte.
    Sans pouvoir examiner le composant avec XDebug, difficile d'être plus précis.
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Administration d'un composant maison

      [Modo]Déplacement dans la section Développement[/Modo]
      Christophe (cavo789)
      Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
      Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

      Commentaire


      • #4
        Re : Administration d'un composant maison

        @Jisse03 : Je ne connais pas xDebug tu peux m'en dire un peu plus stp ?

        @Cavo : merci pour le déplacement. Et pour le composant sur lequel je m'appuie pour développer le mien

        le fichier admin.swap.php
        Code PHP:
        <?php
        defined
        ('_JEXEC') or die('Restricted access');

        // Require the base controller
        require_once (JPATH_COMPONENT.DS.'controller.php');

        // Require specific controller if requested
        if($controller JRequest::getCmd('controller')) {
            require_once (
        JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php');
        }

        // Create the controller
        $classname    'SwapsController'.$controller;
        $controller = new $classname( );

        // Perform the Request task
        $controller->executeJRequest::getVar('task'));

        // Redirect if set by the controller
        $controller->redirect();

        ?>
        le controller :
        Code PHP:
        <?php

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

        class 
        SwapsController extends JController
        {

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

        }
        ?>
        le controller dedié: (pour l'instant je veux juste le message publié / depublié )
        Code PHP:
        <?php
        defined
        '_JEXEC' ) or die( 'Restricted access' );

        class 
        SwapsControllerSwaps extends SwapsController
        {
            function 
        __construct$config = array() )
            {
                
        parent::__construct$config );
                
        $this->registerTask'unpublish',    'publish' );
            }
            
            function 
        publish()
            {
                
        $this->setRedirect'index.php?option=com_swaps' );
                
                
        // Initialize variables
                
        $task        JRequest::getCmd'task' );
                
        $publish    = ($task == 'publish');
                
        $n            count$cid );

                if (empty( 
        $cid )) {
                    return 
        JError::raiseWarning500JText::_'No items selected' ) );
                }

                
        $this->setMessageJText::sprintf$publish 'Forms published' 'Forms unpublished'$n ) );
            }
        }
        et enfin le default.php
        Code PHP:
        <?php defined('_JEXEC') or die('Restricted access'); ?>

        <form action="index.php" method="post" name="adminForm">
        <div id="editcell">
            <table class="adminlist">
            <thead>
                <tr>
                    <th width="3%">
                        <?php echo JText::_'Num' ); ?>
                    </th>
                    <th width="3%">
                        <input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count$this->items ); ?>);" />
                    </th>            
                    <th width="40%">
                        <?php echo JText::_'Title' ); ?>
                    </th>
                    <th width="5%" nowrap="nowrap">
                        <?php echo JHTML::_('grid.sort'JText::_'Published' ), 'published', @$lists['order_Dir'], @$lists['order'] ); ?>
                    </th>
                    <th width="3%">
                        <?php echo JText::_'ID' ); ?>
                    </th>
                </tr>            
            </thead>
            <?php
            $k 
        0;
            
        $n=count$this->items );
            for (
        $i=0$i $n$i++)
            {
                
        $row = &$this->items[$i];
                
        $published    JHTML::_('grid.published'$row$i );
                
        $checked     JHTML::_('grid.id',   $i$row->id );

                
        ?>
                <tr class="<?php echo "row$k"?>">
                    <td>
                        <?php echo $i+1?>
                    </td>
                    <td>
                        <?php echo $checked?>
                    </td>
                    <td>
                        <?php echo $row->title?>
                    </td>
                    <td align="center">
                        <?php echo $published;?>
                    </td>
                       <td>
                        <?php echo $row->id?>
                    </td>
                </tr>
                <?php
                $k 
        $k;
            }
            
        ?>    
            </table>
        </div>

        <input type="hidden" name="option" value="com_ckforms" />
        <input type="hidden" name="task" value="" />
        <input type="hidden" name="boxchecked" value="0" />
        <input type="hidden" name="controller" value="ckforms" />
        </form>
        je vois vraiment pas où ça pète

        Commentaire


        • #5
          Re : Administration d'un composant maison

          Pourquoi ton formulaire indique

          Code PHP:
          <input type="hidden" name="option" value="com_ckforms" /> 
          <
          input type="hidden" name="task" value="" /> 
          <
          input type="hidden" name="boxchecked" value="0" /> 
          <
          input type="hidden" name="controller" value="ckforms" /> 
          Tu n'aurais pas oublié de changer le nom de "option" et de "controller" après avoir piqué le code d'un formulaire CKForms ?

          Et oui, c'est aussi bête que ça...
          Christophe (cavo789)
          Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

          Commentaire


          • #6
            Re : Administration d'un composant maison

            Je te propose d'utiliser la console de debug de ton browser (nul doute que tu utilises le meilleur, FF pour ne point le citer).

            Va voir cette discussion : http://forum.joomla.fr/showthread.ph...ans-controller
            Depuis que j'ai appris cette technique, j'ai ajouté ces instructions partout dans mon propre composant et cela a sensiblement simplifié mon processus de debogage.
            Christophe (cavo789)
            Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
            Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

            Commentaire


            • #7
              Re : Administration d'un composant maison

              Ok j'ai honte

              j'ai corrigé mais le résultat est le même, j'ai une 404 : Impossible de trouver le composant

              Je vais voir le lien que tu m'as donné, merci

              Commentaire


              • #8
                Re : Administration d'un composant maison

                Ton controller est dans un sous-dossier /controller ou dans le même dossier que ton admin.xxxx.php ?
                Christophe (cavo789)
                Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                Commentaire


                • #9
                  Re : Administration d'un composant maison

                  Dans un sous dossier controllers, et ta question est très pertinente, je pense que mon erreur vient de l'emploi non maitrisé entre "swap" et "swaps".
                  Je vais bien relire partout et voir les noms de fichiers qui peuvent coincer

                  Commentaire


                  • #10
                    Re : Administration d'un composant maison

                    BINGO !

                    Merci beaucoup pour ton aide Cavo !
                    Je continue à m'inspirer de ckforms pour la suite de mes dévs

                    Commentaire


                    • #11
                      Re : Administration d'un composant maison

                      Pour que ton post puisse être utile à d'autres, peux-tu expliquer quel était le problème (visiblement un soucis de nommage) et ce que tu as fais pour corriger le tir.

                      Bonne prog'

                      [EDIT]Merci de passer ton post en Réglé[/EDIT]
                      Christophe (cavo789)
                      Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                      Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                      Commentaire


                      • #12
                        Re : Administration d'un composant maison

                        Effectivement, comme je débute un peu et que j'avance à tâtons, je ne m'étais pas vraiment fixé de règles de nommage.
                        Notamment, je n'étais pas cohérent au niveaux du nommage de la classe SwapsControllerSwap"s" et aussi dans le redirect de la fonction publish $this->setRedirect( 'index.php?option=com_swaps' );
                        Après avoir tout uniformisé, mon composant fonctionne tel que je le souhaite.

                        Commentaire


                        • #13
                          Re : Administration d'un composant maison

                          @Jisse03 : Je ne connais pas xDebug tu peux m'en dire un peu plus stp ?
                          XDebug est un outil de debug pour PHP qui fonctionne exactement comme un debuguer classique pour C/C++, tu peux inspecter dynamiquement les variables, mettre des points d'arrêt, exécuter une routine en pas à pas, etc.

                          Outil vraiment indispensable aux développeurs Voir : http://xdebug.org/
                          Pas de demande de support par MP.
                          S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                          Commentaire


                          • #14
                            Re : Administration d'un composant maison

                            Envoyé par jisse03 Voir le message
                            Outil vraiment indispensable aux développeurs Voir : http://xdebug.org/
                            [HS]Pas vrai... Certains arrivent à vivre sans... A moins qu'ils ne sont pas repris dans la catégorie "développeur" [/HS]
                            Christophe (cavo789)
                            Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                            Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                            Commentaire

                            Annonce

                            Réduire
                            Aucune annonce pour le moment.

                            Partenaire de l'association

                            Réduire

                            Hébergeur Web PlanetHoster
                            Travaille ...
                            X