Класс не найден

Я новичок в MVC и Codeigniter и пытаюсь заставить класс работать.

Я использую CodeIgniter 2.1.0 и Doctrine 2.2.1.

Когда мой код вызывает функцию submit(), я получаю Class 'Myclass_model' not found и ссылки на строку, которая включает: $u = new Myclass_model();

(См. примечание к редактированию внизу, теперь он получает Class 'Doctrine_Record' not found в модели, где он расширен)

В моем контроллере следующий код:

public function submit() {

        if ($this->_submit_validate() === FALSE) {
            $this->index();
            return;    
        }

        $u = new Myclass_model();
        $u->username = $this->input->post('username');
        $u->password = $this->input->post('password');
        $u->email = $this->input->post('email');
        $u->save();

        $this->load->view('submit_success');
    }

И в моей папке /application/models/ у меня есть myclass.php:

class Myclass extends Doctrine_Record {

public function setTableDefinition() {
    $this->hasColumn('username', 'string', 255, array('unique' => 'true'));
    $this->hasColumn('password', 'string', 255);
    $this->hasColumn('email', 'string', 255, array('unique' => 'true'));
}

public function setUp() {
    $this->setTableName('testtable1');
    $this->actAs('Timestampable');
            //$this->hasMutator('password', '_encrypt_password');
}

    protected function _encrypt_password($value) {
         $salt = '#*seCrEt!@-*%';
         $this->_set('password', md5($salt . $value));
         //Note: For mutators to work, auto_accessor_override option needs to be enabled. We have already done it, in our plugin file doctrine_pi.php.

    }
}

Я подозреваю, что моя проблема связана с расширением Doctrine_Record. У меня установлена ​​доктрина2, а в папке /application/libraries/ есть Doctrine.php и папка Doctrine. Но я не уверен, где проверить или даже как проверить и убедиться, что Doctrine_Record доступен, настроен и т. д.

Может ли кто-нибудь помочь мне устранить эту проблему и выяснить, в чем проблема? Что-то простое с моим классом? Какая-то проблема с моей установкой/настройкой Doctrine?

Редактировать: я последовал предложению о вызове класса следующим образом:

$this->load->model('Myclass_model','u');

И теперь я получаю Class 'Doctrine_Record' not found, где модель расширяет Doctrine_Record


person jeremy    schedule 04.04.2012    source источник


Ответы (1)


Я подозреваю, что вы не включили свой файл Myclass.php или указали неправильный путь. Если у вас возникли проблемы с расширением Doctrine, в вашей ошибке будет упомянут родитель. Тем не менее, убедитесь, что вы включили родительский файл в свой новый класс с include_once('path/to/doctrine_record');

Вы можете добавить его в файл autoload.php или вручную следующим образом:

public function submit() {

        if ($this->_submit_validate() === FALSE) {
            $this->index();
            return;    
        }

        include_once('/path/to/Myclass.php');
        $u = new Myclass();
        $u->username = $this->input->post('username');
        $u->password = $this->input->post('password');
        $u->email = $this->input->post('email');
        $u->save();

        $this->load->view('submit_success');
    }

Или, что еще лучше, вы загружаете его как модель. Переименуйте файл в myclass_model.php и имя класса в Myclass_model :)

public function submit() {

        if ($this->_submit_validate() === FALSE) {
            $this->index();
            return;    
        }

        $this->load->model('Myclass_model','u');
        $this->u->username = $this->input->post('username');
        $this->u->password = $this->input->post('password');
        $this->u->email = $this->input->post('email');
        $this->u->save();

        $this->load->view('submit_success');
    }
person AlienWebguy    schedule 04.04.2012
comment
Я исправил его, чтобы он загружался как модель, и теперь получаю: Класс «Doctrine_Record» не найден (из моей модели, где он расширяет Doctrine_Record) - person jeremy; 04.04.2012
comment
попытка, тот же результат, Doctrine_Record не найдена. Вопрос обновлен. - person jeremy; 04.04.2012
comment
ты решил это? Пожалуйста, напишите ответ, я в том же месте. Благодарность - person jmunozco; 25.11.2016