如果我只知道模型的名称,我需要知道特定模型的模块名称。
例如,我有:
- 模型
Branch
,存储在protected/modules/office/models/branch.php
和 - 模型
BranchType
存储在protected/modules/config/models/branchtype.php
.
我想知道branch.php
.branchtype.php
这个怎么做?
不幸的是,Yii 没有提供任何本地方法来确定模型所属的模块名称。您必须编写自己的算法来完成此任务。
我可以假设你有两种可能的方法:
第一种方法:
我的模块.php:
class MyModule extends CWebModule
{
public $branchType = 'someType';
}
分支.php
class Branch extends CActiveRecord
{
public function init() // Or somewhere else
{
$this->type = Yii::app()->getModule('my')->branchType;
}
}
在配置中:
'modules' =>
'my' => array(
'branchType' => 'otherType',
)
第二种方法:
在配置中:
'components' => array(
'modelConfigurator' => array(
'models' => array(
'my.models.Branch' => array(
'type' => 'someBranch'
),
),
),
)
您应该编写组件 ModelConfigurator 来存储此配置或以某种方式对其进行解析。然后你可以做这样的事情:
基本模型.php:
class BaseModel extends CActiveRecord
{
public $modelAlias;
public function init()
{
Yii::app()->modelConfigurator->configure($this, $this->modelAlias);
}
}
分支.php:
class Branch extends BaseModel
{
public $modelAlias = 'my.models.Branch';
// Other code
}
尝试这个:
Yii::app()->controller->module->id.
或在控制器内部:
$this->module->id