我的应用程序如下:
/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。它没有。
答案 0 :(得分:1)
您是否正确引导模块?
<?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()
来设置您的映射器目录。
答案 1 :(得分:1)
这已在模块引导程序调用的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