Kohana 3 Авто загрузки моделей - PullRequest
4 голосов
/ 22 мая 2010

Я пытаюсь использовать модель, но получаю фатальную ошибку, поэтому я предполагаю, что она не загружается автоматически.

ErrorException [Фатальная ошибка]: Класс 'Properties_Model' не найден

Неправильная линия контроллера:

$properties = new Properties_Model;

Модель:

class Properties_Model extends Model
{
    public function __construct()
    {
          parent::__construct();
    }

}

Я также поместил класс в три разных места, надеясь, что одна из них сработает, но все это не удалось. Они есть: Применение / классы / модель Применение / модель применение / модель

Что мне не хватает?

Ответы [ 2 ]

6 голосов
/ 23 мая 2010

Ах, я получил этот вопрос по электронной почте прямо мне (через контактную форму моего сайта)!

Вот что я ответил (в интересах других людей, которые могут столкнуться с этой проблемой).

Правильное расположение модели с именем properties равно

application/classes/model/properties.php

, а определение класса будет следующим:

class Model_Properties extends Model { }

Подумайте оподчеркивание выше в качестве разделителя каталогов.То есть, если вы замените подчеркивание на /, у вас будет: 'model / properties', который будет вашим файлом в application/classes.

Чтобы загрузить модель из контроллера, вы можете использовать стандарт PHPновый оператор или делать то, что я предпочитаю, то есть

$propertiesModel = Model::factory('Properties');

Я не на 100%, почему я предпочитаю этот способ ... но у меня это работает:)

2 голосов
/ 22 мая 2010

Во-первых, Файловый элемент Kohana 3 не работает как Kohana 2!

В K2 автозагрузчик просматривает поиск класса по классу в разных папках на основе суффикса класса.

В K3 имена классов «преобразуются» в пути к файлам путем замены подчеркивания косыми чертами.

т.е. Class Properties_Model становится classes/properties/model.php

Как вы можете видеть, использование суффикса модели в этой новой системе на самом деле не поможет сгруппировать ваши модели, поэтому в основном вы добавляете "Модель" к имени класса вместо того, чтобы суффиксировать его:

Model_Property находится в classes/model/property.php

Для получения дополнительной информации см. Руководство пользователя Kohana 3

...