- 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