2012-04-11 8 views
2

Hallo alle zusammen habe ich einen Code, der mir geben diesem FehlerAnruf auf eine Elementfunktion Benutzerdaten() auf einem Nicht-Objekt

Fatal error: Class 'MY_Controller' not found in C:\wamp\www\project\application\controllers\admin\home.php on line 3

Ich habe keine Ahnung, warum es diesen Fehler ist zeigt ...

Der Code von C: \ wamp \ www \ \ application \ Controller Projekt \ admin \ home.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Home extends MY_Controller { 

function index() 
{ 
    redirect('admin/login'); 
} 

function logout() 
{ 
    $this->session->unset_userdata('logged_in'); 
    //session_destroy(); 
    redirect('admin/login'); 
} 
} 
?> 

der Code von C: \ wamp \ www \ Projekt \ application \ Bibliotheken \ MY_Controller.php ist

<?php 

class MY_Controller extends CI_Controller { 
public function __construct() { 
    parent::__construct(); 
    if (!$this->session->userdata('logged_in')) { 
     redirect('admin/login'); 
    } 
} 

} 

Und auch wenn ich Platz

class Home extends CI_Controller

statt

class Home extends MY_Controller

im

C:\wamp\www\project\application\controller\admin\home.php

Datei und versuchen, die

C:\wamp\www\project\application\libraries\MY_Controller.php

012 zu laden

im Konstruktor von

C:\wamp\www\project\application\controllers\admin\home.php

es zeigt

Call to a member function userdata() on a non-object

Warum so?

Antwort

5

Sie müssen Klassendateien auf core statt library Ordner legen, wenn Sie Systemklassen erweitern. Setzen Sie MY_Controller.php in core Ordner.

+0

Dank .. Es funktioniert jetzt .. Aber ich habe viele Beispiele gesehen, wo sie die Datei in Bibliotheken platzieren. Für mich, warum es nicht funktioniert. Irgendeine Idee .. – Subhra

+2

Wenn Sie Systemklassen erweitern, legen Sie die Dateien in Core nicht Bibliothek – Broncha

+0

Danke für die Hilfe. – Subhra

0

finden Sie in der Dokumentation: http://codeigniter.com/user_guide/general/core_classes.html

Core-Controller in application/core/

So gespeichert werden müssen, wenn Sie ein Objekt erweitern, wird es dort für sie suchen. Library-Ordner zur Speicherung von 'externen' Bibliotheken verwendet, die Sie explizit in Ihrem Controller muss Folgendes enthalten:

Ex: $this->load->library('class name');

Info auf Bibliotheken hier: http://codeigniter.com/user_guide/general/libraries.html

+0

Wenn ich jedoch "class Home extends CI_Controller" statt "class Home extends MY_Controller" in die Datei "C: \ wamp \ www \ project \ application \ contorller \ admin \ home.php" lege und versuche, das "C: \ wamp \ www \ projekt \ application \ libraries \ MY_Controller.php "im Konstruktor von" C: \ wamp \ www \ projekt \ application \ contorller \ admin \ home.php ", es zeigt" Call to a member function userdata () auf einem Nicht-Objekt ". – Subhra

+1

@Subhra, bitte aktualisieren Sie Ihren Fehler in Ihrer Hauptfrage, auch Ihre Controller-Pfad ist falsch 'contorller'? – Jakub

Verwandte Themen