Fatal error: Call to undefined method getErrorMsg()

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

  • [RÉGLÉ] Fatal error: Call to undefined method getErrorMsg()

    Bonjour à tous,
    en reprenant le tutoriel du composant Hello World MVC du wiki Joomla, j'ai voulu faire un composant pour gérer une base de données de News pour mon site.
    J'ai réussi à installer le composant et il m'affiche bien mes news stockées dans la base de données, leur id, leur titre...
    Le problème c'est que je ne peux effectuer aucune opération sur mes données, que je tente de supprimer, sauvegarder une nouvelle actu ou une modification d'actu, je tombe sur deux erreurs, mais la deuxième est sûrement la source de la première :


    Warning: Invalid argument supplied for foreach() in /opt/lampp/htdocs/digicom/libraries/joomla/database/database/mysql.php on line 377

    Fatal error: Call to undefined method TableActu::getErrorMsg() in /opt/lampp/htdocs/digicom/administrator/components/com_actu/models/actu.php on line 100


    Voici la partie du code concernée, dans le modèle actu :

    Code:
    	
    	/**
    	 * Method to store a record
    	 *
    	 * @access	public
    	 * @return	boolean	True on success
    	 */
    	function store()
    	{	
    		$row =& $this->getTable();
    
    		$data = JRequest::get( 'post' );
    
    		// Bind the form fields to the actu table
    		if (!$row->bind($data)) {
    			$this->setError($this->_db->getErrorMsg());
    			return false;
    		}
    
    		// Make sure the actu record is valid
    		if (!$row->check()) {
    			$this->setError($this->_db->getErrorMsg());
    			return false;
    		}
    
    		// Store the web link table to the database
    		if (!$row->store()) {
    			$this->setError( $row->getErrorMsg() );
    			return false;
    		}
    
    		return true;
    	}
    
    	/**
    	 * Method to delete record(s)
    	 *
    	 * @access	public
    	 * @return	boolean	True on success
    	 */
    	function delete()
    	{
    		$cids = JRequest::getVar( 'cid', array(0), 'post', 'array' );
    
    		$row =& $this->getTable();
    
    		if (count( $cids )) {
    			foreach($cids as $cid) {
    				if (!$row->delete( $cid )) {
    					$this->setError( $row->getErrorMsg() );
    					return false;
    				}
    			}
    		}
    		return true;
    	}
    (la ligne 100 c'est le $this->setError( $row->getErrorMsg() ); Et puis ça dépend de l'opération que je souhaite faire, pour delete ce sera le même message mais pour la ligne dans la fonction delete ).

    Ma table actu :
    Code:
    <?php
    /**
     * Actu table class
     * 
     * @package    Joomla.Tutorials
     * @subpackage Components
     * @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_4
     * @license        GNU/GPL
     */
     
    // No direct access
    defined('_JEXEC') or die('Restricted access');
     
    /**
     * Actu Table class
     *
     * @package    Joomla.Tutorials
     * @subpackage Components
     */
    class TableActu extends JTable
    {
        /**
         * Primary Key
         *
         * @var int
         */
        var $id = null;
    	
    	/**
         * @var string
         */
        var $titre = null;
     
        /**
         * @var string
         */
        var $contenu = null;
     
        /**
         * Constructor
         *
         * @param object Database connector object
         */
        function __construct( &$db ) {
            parent::__construct('#__actu', 'id', $db);
        }
    }
    Je ne suis pas sûr d'où peut venir le problème, peut être du 'post' comme j'ai vu sur un sujet similaire mais en ayant changé cette ligne ça n'a rien arrangé.
    Pour faire simple c'est un "copié collé" du composant du tutoriel, arrangé avec mes données, mes noms de classes et tout le toutim, j'avais essayé le composant hello world il marchait très bien à ce moment là.

    J'ai cherché sur Google et sur le forum pour trouver une solution, mais celles que j'ai trouvées ne semblent pas marcher, je vous demande donc un peu d'aide en vous remerciant d'avance pour vos réponses .

    EDIT: J'ai essayé de remplacer le $row->getErrorMsg(à par $this->_db->getErrorMsg() mais là ça me déconnecte carrément de l'interface administrateur (avec impossibilité de revenir, il faut que je ferme le navigateur et que je relance !).
    Dernière édition par Magicorange à 04/05/2012, 15h25

  • #2
    Re : Fatal error: Call to undefined method getErrorMsg()

    Quelqu'un pourrait-il m'aider ??
    J'ai vraiment besoin de terminer ce composant, je ne sais pas comment je peux régler ça, j'ai rien trouvé sur le net qui pourrait m'aider

    EDIT : Alors c'est vraiment très étrange, j'ai crée un composant pour une autre table (une table qui contient des vidéos, avec comme attributs id,titre,url, date de post) basé une nouvelle fois sur ce composant en remplaçant les noms et tout ce qu'il fallait, et cette fois j'ai réussi à faire une suppression de vidéo, sauf que j'ai encore une fois été déconnecté et qu'il a fallu que je relance le navigateur.
    J'ai essayé de faire une nouvelle entrée mais j'obtiens la même erreur qu'avant.

    En attendant, je n'ai toujours pas réussi à faire marcher le premier composant.

    EDIT 2 : Mon deuxième composant marche, j'ai testé la suppression, l'ajout et la modification de vidéos, par contre j'ai encore ce problème de deconnexion de la zone admin !
    Je vois tout de même pas d'où vient le problème avec le premier vu que les deux composants sont presques identiques !
    En fait, ça me fait revenir à l'écran de connexion, mais si j'essaye de me reconnecter il me sort que je ne suis pas autorisé à accéder à l'administration !
    Dernière édition par Magicorange à 04/05/2012, 17h02

    Commentaire


    • #3
      Re : Fatal error: Call to undefined method getErrorMsg()

      Sauf erreur de ma part (à mon âge, la mémoire joue parfois des tours) getErrorMsg() est une méthode connue sous Joomla 1.5, plus ensuite. Tu es sûre que le tuto que tu utilises n'est pas un tutoriel pour Joomla 1.5 ?

      Et pour le "$this->_db->...", qu'est-ce que _db ? Tu n'as pas cette variable dans ton code à priori. Et si c'est l'objet "db" de Joomla, c'est impossible d'y accéder comme tu le fais vu que cet objet est protected (c'est toujours le cas de ceux qui débutent par un underscore). Impossible d'y accéder directement.

      Je te propose de lire un tutoriel de programmation Joomla 2.5 : http://cocoate.com/2012/01/le-guide-...ppement-joomla

      Bonne prog'
      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 : Fatal error: Call to undefined method getErrorMsg()

        Merci pour ta réponse,

        Plus précisément, c'est ce tutoriel là : http://docs.joomla.org/Developing_a_...onent_-_Part_1

        J'ai fait une petite boulette car je n'ai pas vu le "if you're running on 1.5,2.5... follow this guide", mais je sais pas si je devrais lire tout ce tutoriel supplémentaire, je pense que je pourrais m'en sortir avec ma version actuelle non ?

        Et puis pour ton livre, je ne peux pas me le procurer je suis en stage à l'étranger pour le moment
        Même si getMsg remonte à la 1.5 on dirait qu'elle ne semble pas trop gêner le fonctionnement en 2.5, enfin, mis à part mon problème de déconnexion bien sûr (mais ce n'est peut être pas lié).
        Je vais fouiller mon premier composant à nouveau pour voir où j'ai pu oublier des éléments, car sur mon deuxième composant ça marche presque bien.

        Aurais-tu une piste sur le problème de deconnexion ?
        Dernière édition par Magicorange à 04/05/2012, 17h48

        Commentaire


        • #5
          Re : Fatal error: Call to undefined method getErrorMsg()

          re-,

          Première ligne, tout en haut du tutoriel que tu as mentionné :

          This guide is for Joomla! Joomla 1.5 version. If you are working with Joomla! Joomla 1.6 Joomla 1.7 Joomla 2.5, please redirect to this guide
          Pour "mon" guide qui n'est pas le mien, faut bien chercher sur le site, tu trouveras le lien vers le pdf gratuit. Hagen, l'auteur, semble de plus en plus malicieux et planque le lien pour "un peu" forcer l'achat de la version papier/électronique, semble-t-il.
          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 : Fatal error: Call to undefined method getErrorMsg()

            Pour Joomla! 2.5: http://cocoate.com/2012/01/le-guide-...ppement-joomla et http://docs.joomla.org/Developing_a_...for_Joomla!1.6
            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


            • #7
              Re : Fatal error: Call to undefined method getErrorMsg()

              En effet, il est bien caché ce lien !
              Bon, il va falloir que je laisse tomber ma version alors
              Je vais voir si j'ai le temps ce week end pour reprendre tout ça avec le pdf et le tuto 2.5, sinon je continuerai lundi prochain.
              Merci à vous
              Dernière édition par Magicorange à 04/05/2012, 18h01

              Commentaire


              • #8
                Re : Fatal error: Call to undefined method getErrorMsg()

                Envoyé par Magicorange Voir le message
                En effet, il est bien caché ce lien !
                Bon, il va falloir que je laisse tomber ma version alors
                [mode HS]En tentant de faire fonctionner un carburateur de 2CV dans une C3, il fallait s'attendre à quelques problèmes [/mode]

                La version US de joomla.org est vraiment très bien réalisée et détaillée, étape par étape, de manière très claire, tout au moins pour ceux qui lisent le boeuf bouilli dans le texte
                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


                • #9
                  Re : Fatal error: Call to undefined method getErrorMsg()

                  Bonsoir, petit remontage de topic !
                  Alors j'ai tenté de refaire mon composant à partir du tutoriel 2.5 mais après avoir passé ma matinée là dessus je me retrouve avec un vieux "Composant Introuvable" quand je clique sur le lien dans le menu composants.
                  Je me suis dit alors que je vais tester l'autre tutoriel, de cocoate, mais là c'est à l'installation que ça coince (un autre élément de menu avec le même parent possède l'alias).
                  C'est des erreurs sûrement toutes bêtes mais avec tous les fichiers à vérifier c'est comme chercher une aiguille dans une botte de foin !
                  Je me repencherai demain sur tout cela car j'ai le cerveau en bouillie après avoir avalé ces tutos d'une traite.

                  Le tuto de cocoate est bien expliqué mais y'a un gros enchaînement de codes à partir d'un moment, ce qui m'a fatigué à force de copier/coller/modifier les parties à chaque fois .
                  Le tutoriel wiki est bien, mais il part un peu en cacahuète vers la deuxième moitié, avec les ACL et autres curiosités dont je n'ai pas besoin pour le moment (je me suis arrêté à "adding back end actions" ).
                  C'est plus tellement un "basic MVC component" tout ça

                  Bref, je trouve que le 2.5 c'est un peu plus complexe que le 1.5, et un peu plus dur à suivre parfois, mais je trouve ça dommage que le tutoriel wiki s'attarde sur des aspects finalement assez secondaires (ajouter des langues par exemple), celui de la version 1.5 était plus simple à suivre.
                  Dernière édition par Magicorange à 07/05/2012, 17h03

                  Commentaire


                  • #10
                    Re : Fatal error: Call to undefined method getErrorMsg()

                    Le tuto du wiki est complet et vraiment basic.

                    En effet, la gestion des langues étant native en 2.5, ainsi que les ACL, un composant qui ne respecterait pas complètement ces 2 aspects de Joomla! serait quelque peu bancale, et poserait pas mal de problèmes à divers niveaux.
                    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


                    • #11
                      Re : Fatal error: Call to undefined method getErrorMsg()

                      J'ai repris directement le composant hello world du wiki pour aller plus vite, et cette fois ça marche du tonnerre de dieu maintenant, et mon problème de composant introuvable venait certainement du nommage du composant dans le fichier xml (nom au pluriel alors que mes fichiers étaient pour la plupart au singulier, sauf ceux pour les listes).
                      En tout cas, contrairement à la version 1.5 cette fois je peux gérer mes news, mon contenu et tout le reste sans déconnexion !
                      Il me reste plus qu'à adapter cela pour mes autres gestionnaires de contenu et ça sera nickel !

                      Merci à vous pour votre aide !

                      Commentaire

                      Annonce

                      Réduire
                      Aucune annonce pour le moment.

                      Partenaire de l'association

                      Réduire

                      Hébergeur Web PlanetHoster
                      Travaille ...
                      X