Ну, я новичок в CodeIgniter Framework, и я пытаюсь создать общий модельный класс. Видеть:
class Basic_Model extends CI_MODEL { function __construct() { // Call the Model constructor parent::__construct(); } }
Я хочу расширить все модели на основе Basic_Model, например:
class Pagina_Model extends Basic_Model { function __construct() { // Call the Model constructor parent::__construct(); } }
Проблема в том, что когда я пытаюсь вызывать «pagina_model» из контроллера a, возникает следующая ошибка:
Fatal error: Class 'Basic_Model' not found in /var/www/myproject/application/models/pagina_model.php on line 12
Если я использую «basic_model» в контроллере, все работает нормально.
ИЗМЕНИТЬ 1:
Я создал файл с именем MY_Basic_Model.php в «/ application / core» и изменил имя класса на «MY_Basic_Model». Но я получил ошибку:
Fatal error: Class 'MY_Basic_Model' not found in /var/www/myproject/application/models/pagina_model.php on line 12
Для этого вам нужно создать Core System Classes (это также известно как переопределение метода ).
Создайте файл MY_Model.php
в MY_Model.php
application/core/
который расширит базовый класс CI_Model
:
<?php class MY_Model extends CI_Model { function __construct() { parent::__construct(); } }
Теперь вы можете расширить это в своих моделях (../applicaton/models/) :
<?php class Pagina_Model extends MY_Model { function __construct() { parent::__construct(); } }
Здесь мало что нужно отметить:
1) Объявление класса должно расширять родительский класс.
2) Ваше новое имя класса и имя файла должны иметь префикс MY_ (этот элемент настраивается).
Как настроить:
Чтобы настроить собственный префикс под-класса, откройте файл application / config / config.php и найдите этот элемент:
$config['subclass_prefix'] = 'MY_';
Документация:
https://ellislab.com/codeigniter/user-guide/general/core_classes.html
Вы можете сделать это таким образом.
предположим, что у вас есть basic_model.php внутри вашей папки модели. Теперь добавьте код для class Basic_Model
который вы написали
class Basic_Model extends CI_MODEL { function __construct() { // Call the Model constructor parent::__construct(); } }
Теперь сделайте pagina_model.php внутри вашей папки с образцом и добавьте код, который вы написали. Просто включите первую строку, например, ниже
<?php require APPPATH.'/models/basic_model.php';//just add this line and keep rest class Pagina_Model extends Basic_Model { function __construct() { parent::__construct(); } }
надеюсь, что это решит вашу проблему
Вы можете сделать это … Модель MY_ действительно хороша, но если вы хотите, чтобы вспомогательная модель расширила другую подмодуальную модель, которую вы всегда можете сделать:
require(APPPATH.'models/Other_model.php'); class New_model extends Other_Model {
В моем случае Other_Model фактически расширяет MY_model.