Probleme fonction store()

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

  • [RÉGLÉ] Probleme fonction store()

    Bonjour,

    je suis un petit nouveau tant dans le php que dans joomla!. Et je me suis lancé dans la réalisation d'un composant joomla cependant j'ai un problème avec la fonction store suivante:

    Code PHP:
    function store()
        {
            
    $row =& $this->getTable();
            
            
    $data JRequest::get'post' );

            
    // Bind the form fields to the hello table
            
    if (!$row->bind($data)) {
                
    $this->setError($this->_db->getErrorMsg());
                return 
    false;
            }

            
    // Make sure the hello 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;
        } 
    Je l'appelle avec la fonction save qui est censé enregistrer un produit dans une table formations. La fonction save est donc appellée après avoir rempli un formulaire classique et l'erreur que me donne PHP est la suivante:

    PHP Fatal error: Call to a member function store() on a non-object
    ( je sais ce que ça veut dire en anglais ) mais je comprend tout de même pas puisque je suis parti d'une base d'un composant déjà qui fonctionne de la même manière ...
    Je soupçonne tout de même le fait que ma table s'appelle formations et que ma classe s'appelle CatalogueModelCatalogue extends JModel

    Code PHP:
    function save()
        {
            
    $model $this->getModel('catalogue');
            if (
    $model->store($post)) {
                
    $msg JText::_'Formation sauvegardée!' );
            } else {
                
    $msg JText::_'Erreur lors de la sauvegarde de la formation.' );
            }

            
    // Check the table in so it can be edited.... we are done with it anyway
            
    $link 'index.php?option=com_catalogue';
            
    $this->setRedirect($link$msg);
        } 
    Merci d'avance !
    Dernière édition par flowx1710 à 12/08/2011, 14h43

  • #2
    Re : Probleme fonction store()

    Bonjour

    Cela fait quelque temps maintenant que je n'utilise plus de modèles dans ma programmation...

    L'erreur rencontrée veut dire que $row n'est pas soit initialisé soit que store() n'est pas une méthode de $row. $row pourrait ne pas être initialisé si getTable() retourne null.

    La différence entre ton code et le second que tu postes : le premier fait un $this->getTable() et le second $this->getModel(). As-tu déjà essayé un getModel ?
    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


    • #3
      Re : Probleme fonction store()

      Merci de ta réponse (très rapide ).

      Non ce n'est pas ça le problème. Aussi ma table ne s'appelle pas jos_formations mais juste formations ce serait de la que vient le problème ?
      Cela fait 2 jours que j'ai cette erreur je comprend pas trop là

      Commentaire


      • #4
        Re : Probleme fonction store()

        Renomme ta table jos_formations et tu seras fixé Cela me semble effectivement évident que la table devrait se nommer xxxx_formations càd reprendre le préfixe de tes tables (visiblement jos_ dans ton cas).
        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


        • #5
          Re : Probleme fonction store()

          Envoyé par cavo789 Voir le message
          Renomme ta table jos_formations et tu seras fixé Cela me semble effectivement évident que la table devrait se nommer xxxx_formations càd reprendre le préfixe de tes tables (visiblement jos_ dans ton cas).
          Enfaite mon problème était uniquement cela. Utiliser la classe JTable requiert d'utiliser les tables selon la norme joomla avec jos__matable et donc #__matable dans le code.

          Aussi, il faut faire attention au niveau des noms des classes qui doivent parfois être la même qu'un nom de fichier.
          Je pense que le dire est super important pour les débutants parce que pour moi cela s'est traduit d'une perte sèche de 14h de boulot x)

          Ah oui et ne pas oublier de créer sa classe avec les champs exactement dans le même ordre que la base x) sinon ca fait de la merde du type

          PHP Catchable fatal error: Object of class JDatabaseMySQL could not be converted to string

          Bonne continuation et merci encore pour ta rapidité.
          Dernière édition par flowx1710 à 16/08/2011, 12h45

          Commentaire


          • #6
            Re : Probleme fonction store()

            Appréhender la programmation MVC Joomla n'est pas une sinécure et passe par ce type de perte de temps. Il faut s'adapter et comprendre comment fonctionne le framework de Joomla et pour ça, pas de miracle, cela passe par ce type d'arrachage de cheveux.

            Si tu ne l'as pas encore fait, peux-tu passer ton post en Réglé ?

            Bye
            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