К сожалению 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);
}
}
Branch.PHP:
class Branch extends BaseModel
{
public $modelAlias = 'my.models.Branch';
// Other code
}
Вот только получить модуль текущей модели. Но я хочу получить другое имя модуля. – Thyu
Как сказал Thyu, и это вызовет ошибку в консольных приложениях (в которых даже нет контроллера). – mmitchell