モデルの名前しか知らない場合、特定のモデルのモジュール名を知る必要があります。
たとえば、私は持っています:
- モデル、および
Branch
に保存protected/modules/office/models/branch.php
BranchType
に格納されているモデルprotected/modules/config/models/branchtype.php
。
branch.php
のクラスからのモジュール名を知りたいですbranchtype.php
。
これを行う方法?
残念ながら、Yii はモデルが属するモジュール名を決定するためのネイティブ メソッドを提供していません。このタスクを実行するには、独自のアルゴリズムを作成する必要があります。
考えられる方法は 2 つあります。
最初の方法:
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',
)
2 番目の方法:
構成:
'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);
}
}
Branch.php:
class Branch extends BaseModel
{
public $modelAlias = 'my.models.Branch';
// Other code
}
これを試して:
Yii::app()->controller->module->id.
またはコントローラー内:
$this->module->id