Ok, donc dans mon contrôleur de base (page.php) Je le code suivant qui fonctionne très bien:CodeIgniter -> ayant des difficultés à charger plusieurs bibliothèques/classes
$this->load->library('Siteclass');
$mysite = new site_model();
Les références de la bibliothèque siteclass un modèle nommé site_model et instancie en fonction des données reçues de ce modèle. Tout est bon.
Maintenant, je veux charger une autre bibliothèque pour pouvoir instancier un autre objet. J'ajoute donc cela page.php:
$this->load->library('Memberclass');
$mysite = new member_model();
Mais maintenant, je reçois l'erreur suivante:
Message: Undefined property: Memberclass::$site_model
Filename: libraries/Loader.php
Line Number: 1035
D'après ce que je peux dire, il semble que la classe de chargement, lorsqu'il est appliqué à la MemberClass , est en quelque sorte toujours référençant le site_model au lieu du member_model. J'ai vérifié mon code et j'appelle définitivement les bons fichiers.
Voici ce que Siteclass.php ressemble à:
if (! defined('BASEPATH')) exit('No direct script access allowed');
class Siteclass extends Controller {
function __construct() {
parent::Controller();
$this->load->model('Site_model');
$data = $this->Site_model->load_site_data();
// etc etc
et voici ce que Memberclass.php ressemble à:
if (! defined('BASEPATH')) exit('No direct script access allowed');
class Memberclass extends Controller {
function __construct() {
parent::Controller();
$this->load->model('Member_model');
$data = $this->Member_model->load_member_data();
// etc etc
Merci d'avance pour toute aide!
Gary
@treeface - Je ne pense pas que je voulais utiliser la classe loader pour configurer un contrôleur. Je voulais utiliser la classe loader pour configurer des objets spécifiques. Lorsque j'ai créé la bibliothèque, je n'ai pas pu charger le modèle.Il m'a semblé que le chargement du modèle ne fonctionnait que dans la bibliothèque quand j'en ai fait un contrôleur. Voici ce que je veux faire: mon contrôleur de base est page.php et j'utilise __remap() de sorte que toutes les URL de/page/quelque chose vont à ce contrôleur. De là, je veux être capable d'instancier divers objets basés sur des classes définies comme membre, utilisateur, etc. Pouvez-vous suggérer la bonne façon de faire cela? Merci! – Gary
@treeface - ok, je pense que je me rapproche. Dans page.php j'appelle le modèle, qui renvoie les données dont j'ai besoin, * puis * J'appelle la bibliothèque dans laquelle j'instancie l'objet, en incluant ces données de modèle dans l'appel de bibliothèque. Suis-je sur le bon chemin? – Gary
@Gary Si vous souhaitez obtenir des données d'un modèle dans votre bibliothèque, vous devez obtenir une référence au contrôleur CI actuellement utilisé. Pour faire cela dans votre contrôleur, vous devriez faire ceci: '$ CI = & get_instance();'. Vous pouvez maintenant appeler le modèle en faisant '$ CI-> my_model-> getMyData();'. – treeface