- 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

