Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Class jDb not found

Posted by débutantjelix on 06/09/2021 18:19

Bonjour,

Voici l'arborescence du dossier principal qui contient mon application que j'appelle "monappli" et le dossier "vendor"

dossier principal
    monappli/modules/monmodule/Controllers/fixtures.class.php
    vendor/Fakerphp/faker/src/faker/Provider/fr_FR/Categorie.php

voici le code de vendor/Fakerphp/faker/src/faker/Provider/fr_FR/Categorie.php

<?php

namespace Faker\Provider\fr_FR;

class Categorie extends \Faker\Provider\Base{

    //générateur de catégories
    //randIDcategorie() récupère toutes les catégories existantes dans la table "categorie"
    public function randIDcategories(){
              
            //Je me connecte à la bdd ensuite je compte le nombre d'enregistrements de la table categorie
            $cnx = jDb::getConnection();
            $res = $cnx->query('SELECT (*) FROM categorie');
            $nbr_enreg = 0; //initiaalisation du nombre d'enregistrements à zéro
            if($res->fetch() == null) return; // s'il n'y a pas d'enregistrement ie la table est vide donc on arrête
            while ($res->fetch()) { // je parcours chaque enregistrement
                $array[$nbr_enreg]= $res->id_cat; // j'enregistre l'ID  de chaque categorie dans mon array
                $nbr_enreg++;
            }
            $unIDcategorie = $array[rand(0, $nbr_enreg-1)]; //je récupère au hasard un seul ID de catégorie parmi toutes les ID dans array
            return $unIDcategorie;
    }
}

et celui de monappli/modules/monmodule/Controllers/fixtures.class.php

<?php

class fixturesCtrl extends jController {

    public function load() {

        $rep = $this->getResponse('html');
        //Création du faker
        $faker = Faker\Factory::create('fr_FR');        
        $faker->addProvider(new \Faker\Provider\fr_FR\Categorie($faker));

        //Génération de la table "diviser"
        $diviser = jDao::createRecord('monmodule~diviser');            
        $diviser->fk_id_cat     =   $faker->randIDcategories();
        $diviser->diviser       =   $faker->randIDcategories(); 
        $diviser->save();   
        }
        
        return $rep;
    }
}

Pour tester jevais sur http://localhost:8080/index.php/monmodule/fixtures/load

Résultat :

Class 'Faker\Provider\fr_FR\jDb' not found

Comment résoudre ce problème ? Merci d'avance pour vos réponses

  [Opened] Re: Class jDb not found

Reply #1 Posted by débutantjelix on 06/10/2021 13:00

J'ai ajouté

 require_once JELIX_LIB_PATH.'db/jDb.class.php'; 

comme ceci mais j'ai juste une page blanche sans message d'erreur comme résultat

<?php


namespace Faker\Provider\fr_FR;

require_once JELIX_LIB_PATH.'db/jDb.class.php';


class Categorie extends \Faker\Provider\Base{
        
    //générateur de catégories
    //randIDcategorie() récupère toutes les catégories existantes dans la table "categorie"
    public function randIDcategories(){

            //Je me connecte à la bdd ensuite je compte le nombre d'enregistrements de la table categorie
            $cnx = jDb::getConnection();

            $res = $cnx->query('SELECT (*) FROM categorie');
            $nbr_enreg = 0; //initiaalisation du nombre d'enregistrements à zéro
            if($res->fetch() == null) return; // s'il n'y a pas d'enregistrement ie la table est vide donc on arrête
            while ($res->fetch()) { // je parcours chaque enregistrement
                $array[$nbr_enreg]= $res->id_cat; // j'enregistre l'ID  de chaque categorie dans mon array
                $nbr_enreg++;
            }
            $unIDcategorie = $array[rand(0, $nbr_enreg-1)]; //je récupère au hasard un seul ID de catégorie parmi toutes les ID dans array
            return $unIDcategorie;
        
    }
}

  [Opened] Class jDb not found

Reply #2 Posted by laurentj on 06/11/2021 14:58

Bonjour,

as-tu inclus quelque part le vendor/autoload.php ? (soit dans les fichiers concernés de ton module, si c'est juste pour ton module, soit dans le application.init.php)

  [Opened] Class jDb not found

Reply #3 Posted by laurentj on 06/11/2021 15:04

Et sinon pour jDb, il faut marquer \jDb, sinon PHP essaye de charger Faker\Provider\fr_FR\jDb

  [Opened] Class jDb not found

Reply #4 Posted by laurentj on 06/11/2021 15:05

le require de jDb est inutile.

  [Opened] Class jDb not found

Reply #5 Posted by débutantjelix on 06/11/2021 16:21

laurentj a dit :
le require de jDb est inutile.

C'est exact, je l'ai viré.

  [Opened] Class jDb not found

Reply #6 Posted by débutantjelix on 06/11/2021 16:25

laurentj a dit :
Et sinon pour jDb, il faut marquer \jDb, sinon PHP essaye de charger Faker\Provider\fr_FR\jDb

J'ai mis

 $cnx = \jDb::getConnection(); 

et ça fonctionne. Je te remercie beaucoup d'avoir pris de ton temps pour répondre, c'est sympa. Bonne journée :)

 
Page
  1. Class jDb not found