- 1
[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
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
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
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
Posted by laurentj on 06/11/2021 15:05
le require de jDb est inutile.
[Opened] Class jDb not found
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
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 chargerFaker\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 :)
- 1


