如果我只知道模型的名稱,我需要知道特定模型的模塊名稱。從模型名稱中獲取模塊名稱
例如,我有:
- 模型
Branch
,存儲在protected/modules/office/models/branch.php
並存儲在protected/modules/config/models/branchtype.php
- 模型
BranchType
。
我想知道類branchtype.php
的模塊名稱branch.php
。
如何做到這一點?
如果我只知道模型的名稱,我需要知道特定模型的模塊名稱。從模型名稱中獲取模塊名稱
例如,我有:
Branch
,存儲在protected/modules/office/models/branch.php
並存儲在protected/modules/config/models/branchtype.php
BranchType
。我想知道類branchtype.php
的模塊名稱branch.php
。
如何做到這一點?
不幸的Yii不提供任何本地方法來確定模型屬於模塊名稱。你必須編寫自己的算法來完成這項任務。
我可以假設你兩種可能的方法:
MyModule.php:
class MyModule extends CWebModule
{
public $branchType = 'someType';
}
Branch.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。然後,你可以做這樣的事情:
BaseModel.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
在Yii2試試這個:
echo Yii::$app->controller->module->id;
這僅僅獲得當前模式的模塊。但我想獲得其他模塊名稱。 – Thyu
正如Thyu所說,這會在控制檯應用程序上拋出一個錯誤(甚至沒有控制器)。 – mmitchell