4

モデルの名前しか知らない場合、特定のモデルのモジュール名を知る必要があります。

たとえば、私は持っています:

  • モデル、およびBranchに保存protected/modules/office/models/branch.php
  • BranchTypeに格納されているモデルprotected/modules/config/models/branchtype.php

branch.phpのクラスからのモジュール名を知りたいですbranchtype.php

これを行う方法?

4

3 に答える 3

5

残念ながら、Yii はモデルが属するモジュール名を決定するためのネイティブ メソッドを提供していません。このタスクを実行するには、独自のアルゴリズムを作成する必要があります。

考えられる方法は 2 つあります。

  1. モジュールのモデルの構成をモジュール クラスに格納します。
  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
}
于 2013-10-28T08:51:15.787 に答える
3

これを試して:

Yii::app()->controller->module->id.

またはコントローラー内:

$this->module->id
于 2013-10-28T08:20:48.303 に答える