Domanda

Ho appena iniziato a usare CodeIgniter poche ore fa e ho riscontrato alcuni problemi. Sto cercando di chiamare una funzione, che si trova attualmente in un controller chiamato admin.php . Sto provando ad accedervi da un aiutante. Come lo farei correttamente? Ho provato quasi tutto, ma nulla sembra funzionare mentre ricevo il seguente errore:

Fatal error: Call to a member function login() on a non-object

Qualsiasi aiuto su questo problema sarebbe molto apprezzato

È stato utile?

Soluzione

Sono d'accordo con jimyi. Le classi di supporto e di libreria devono essere indipendenti da qualsiasi controller specifico in un'applicazione. Se disponi di un titolo di pagina " helper, ad esempio, non dovrebbe dipendere da alcun comportamento particolare del controller di amministrazione. E se volessi usare l'helper di pagina in un'altra applicazione che non aveva un controller di amministrazione? O cosa succede se si apportano modifiche al controller di amministrazione lungo la strada, ora è necessario assicurarsi che tali modifiche non rompano il tuo aiuto.

Se la tua funzione di supporto necessita di alcuni particolari bit di dati che ha il controller di amministrazione, puoi passarli come parametro di funzione dal controller. In questo modo l'helper è una dipendenza del controller invece che il controller è una dipendenza dell'helper.

Inoltre, quel messaggio di errore indica che qualunque cosa tu stia chiamando non è stata istanziata correttamente. Quindi stai facendo qualcosa di simile a:

$this->load();

dall'interno dell'helper. Tuttavia, nell'helper,

$this
non è definito (quindi l'errore "non oggetto"). CodeIgniter fornisce un modo per caricare modelli, librerie e viste dall'esterno di un controller. Ma, per quanto ne so, non ti consente di farlo per i controller. Va bene però, per i motivi sopra indicati. Devi fare attenzione quando introduci le dipendenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top