We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 10152
    • 156 Posts
    Hello,

    j’ai écrit un snippet "rafBids" avec table perso, en m’aidant du tutoriel "custom DB 3rd part component".
    Lorsque l’utilisateur soumet un formulaire, ce snippet ajoute une entrée dans la table, et ça fonctionne :

    <?php
    /**
     * @package rafbids
     */
    	$reply			= substr($_POST['reply'],0,255);
    
    	if($reply!=''){
    		$base_path = !empty($base_path) ? $base_path : $modx->getOption('core_path').'/www/core/components/rafbids/';
    		$modx->addPackage('rafbids',$base_path.'model/');  
    		$store = $modx->newObject('rafBids');
    		$store->fromArray(array(
    			'content' => $reply,
    		));
    		$store->save();
    		echo 'Votre réponse a été envoyée.';
    	}
    


    À présent j’aimerai lister toutes les entrées de cette table, j’ai donc créé un nouveau snippet "rafListBids", dont voici le contenu :
    <?php
    		$stores = $modx->getCollection('rafBids');
    		foreach ($stores as $store) {
    			
    		   echo $store->get('content')."<br />\n";
    
    		}
    

    Je m’attendais à obtenir une liste des entrées, hélas il n’en est rien, et pourtant si j’inclus ces quelques lignes à la fin du 1er snippet "rafBids" j’obtiens bien des résultats.

    Est-ce que quelqu’un peut m’aider ?
      • 17499 ☆ A M B ☆
      • 872 Posts
      Verifie dans le second snippet que le model est bien inclus (comme dans le premier)

      <?php
      $base_path = !empty($base_path) ? $base_path : $modx->getOption('core_path').'/www/core/components/rafbids/';
      $modx->addPackage('rafbids',$base_path.'model/');  
      
        • 17499 ☆ A M B ☆
        • 872 Posts
        Pour avoir un rapport d’erreur tu peux utiliser les lignes suivantes:

        <?php
        error_reporting(E_ALL); ini_set('display_errors',true);
        $this->modx->setLogTarget('HTML');
        $this->modx->setLogLevel(MODX_LOG_LEVEL_ERROR);
        


          • 10152
          • 156 Posts
          Oui le modèle est inclus comme dans le premier.

          En activant le rapport d’erreur j’ai une erreur : Fatal error: Using $this when not in object context in /var/www/core/components/raflistbids/snippet.raflistbids.php on line 3


          En fichier attaché, j’ai joint une capture écran de la structure des fichiers.
            • 17499 ☆ A M B ☆
            • 872 Posts
            A la place de this->modx utilise l’object que tu as crée pour MODx.
            Donc, si tu as la même instansation que le premier snippet ça devrait donner ça:

            <?php
            error_reporting(E_ALL); ini_set('display_errors',true);
            $modx->setLogTarget('HTML');
            $modx->setLogLevel(MODX_LOG_LEVEL_ERROR);
            
              • 10152
              • 156 Posts
              Merci pour le tuyau (mes compétences en POO sont encore proches de zéro et ça ne m’est pas sauté aux yeux).

              Donc en effet j’ai une belle erreur :
              [2010-02-26 18:58:31] (ERROR @ /index.php)
              Path specified for package rafbids is not a valid or accessible directory: /var/www/core/components/raflistbids/model/
              [2010-02-26 18:58:31] (ERROR @ /index.php)
              Could not load class: rafBids from mysql.rafbids.
              [2010-02-26 18:58:31] (ERROR @ /index.php)
              Could not load class: rafBids from mysql.rafbids.


              Je résume la situation :
              - premiere portion de code qui ajoute des lignes
              - deuxieme portion de code qui liste les lignes

              Je pensais qu’il fallait deux snippets mais apparement non.
              Je vais tenter de tout regrouper dans le même snippet principal afin de partager la config de la table custom.
              Et ensuite sectionner le code à exécuter avec des if().
                • 17499 ☆ A M B ☆
                • 872 Posts
                Vu la premiere erreur, je présume que tu as voulu utiliser un chemin inexistant:

                <?php
                
                //Essai de Remplacer
                $base_path = !empty($base_path) ? $base_path : $modx->getOption('core_path').'/www/core/components/raflistbids/';
                
                //par:
                $base_path = !empty($base_path) ? $base_path : $modx->getOption('core_path').'/www/core/components/rafbids/';
                
                  • 10152
                  • 156 Posts
                  Merci de ton aide lossendae j’ai tout mis dans un seul snippet et ça marche ! yeah