addResourceType - как я могу добавить Models_Mapper в качестве ресурса? - PullRequest
0 голосов
/ 18 июня 2011

Я пишу приложение PHP с использованием PHP 5.3 и Zend Framework 1.11.7.

Я создал ресурс модели с помощью следующей команды:

protected function _initLoader() 
{

     $loader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Default',
        'basePath'  => APPLICATION_PATH,
    ));

    $loader -> addResourceType ( 'model', 'models', 'Model'); 
}

теперь всякий раз, когда я использую классимя, которое начинается с Default_Model_, идет и ищет в каталоге моделей.в каталоге моделей у меня есть каталог с именем mapper.

как мне настроить, чтобы всякий раз, когда используется класс, начинающийся с Default_Model_Mapper_, для автоматической загрузки его из моделей / mapper?

Ответы [ 3 ]

1 голос
/ 18 июня 2011

Добавьте это:

$loader->addResourceType('mapper', 'models/mapper', 'Model_Mapper_');

Порядок, в котором вы объявляете два типа ресурсов, может иметь значение.Так что попробуйте оба пути;один из них должен работать.

1 голос
/ 10 ноября 2011

Это установлено по умолчанию в Zend_Application_Module_Autoloader в initDefaultResourceTypes:

$this->addResourceTypes(array(
            'dbtable' => array(
                'namespace' => 'Model_DbTable',
                'path'      => 'models/DbTable',
            ),
            'mappers' => array(
                'namespace' => 'Model_Mapper',
                'path'      => 'models/mappers',
            ),
            'form'    => array(
                'namespace' => 'Form',
                'path'      => 'forms',
            ),
....
1 голос
/ 18 июня 2011

ZF должен автоматически найти любой каталог по моделям.Также вам не нужно включать модуль по умолчанию.

Model_
Model_Mapper_

Также для настройки модулей ZF у меня есть следующие 2 строки кода в моем файле application.ini

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] =

И следующее в моей начальной загрузке

protected function _initModuleAutoload()
    {
        $modelLoader = new Zend_Application_Module_Autoloader(array(
                'namespace' => '',
                'basePath' => APPLICATION_PATH . '/modules/default'));
         return $modelLoader;
    }

Я надеюсь, что это поможет

С уважением

Гарри

...