ZF: как установить собственный каталог для картографа или модели? - PullRequest
0 голосов
/ 15 марта 2011

Мое приложение выглядит так:

/application/
     configs/
     layouts/
     modules/
        default/
            controllers/
            models/
               model1.php
            mappers/
               table1.php
            views/
        somemodule/
            controllers/
            models/
               model2.php
            mappers/
               table2.php
            views/

Вопрос в том, как задать путь для картографов, как у моделей?

Если мы используем Somemodule_Model_model2. Оно работает. Но если мы используем Somemodule_Mappers_table2. Это не так.

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Это уже сделано для вас в Zend_Application_Module_Autoloader, вызываемом модулем начальной загрузки.Здесь вы можете увидеть все ресурсы, зарегистрированные для автозагрузки:

/**
 * Initialize default resource types for module resource classes
 *
 * @return void
 */
public function initDefaultResourceTypes()
{
    $basePath = $this->getBasePath();
    $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',
        ),
        'model'   => array(
            'namespace' => 'Model',
            'path'      => 'models',
        ),
        'plugin'  => array(
            'namespace' => 'Plugin',
            'path'      => 'plugins',
        ),
        'service' => array(
            'namespace' => 'Service',
            'path'      => 'services',
        ),
        'viewhelper' => array(
            'namespace' => 'View_Helper',
            'path'      => 'views/helpers',
        ),
        'viewfilter' => array(
            'namespace' => 'View_Filter',
            'path'      => 'views/filters',
        ),
    ));
    $this->setDefaultResourceType('model');
}

Все, что вам нужно, это добавить «resources.modules [] =» в application.ini и поместить Bootstrap.php в каталог модулей (каталог, например):

class Catalog_Bootstrap extends Zend_Application_Module_Bootstrap
{
   //just empty bootstrap class. resource init handled by parent 
}

Примечание. Ресурсам будет предшествовать имя модуля
Пример: Catalog_Model_Mapper_Mapper1 будет находиться в% app% / modules / catalog / models / mappers / Mapper1.php

1 голос
/ 15 марта 2011

Правильно ли вы загружаете свой модуль?

<?php

class ModuleName_Boostrap extends Zend_Application_Module_Bootstrap {

    protected function _initAutoloader() {
        $default_loader = new Zend_Application_Module_Autoloader(array(
             'namespace' => $this->getModuleName().'_',
             'basePath'  => MODULE_PATH.'/'.$this->getModuleName()
        ));
    }

}

Это вызовет initDefaultResourceTypes(), который установит ваш каталог картографа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...