0

“一些常用的功能,比如用户管理、评论管理,可以按照模块来开发,以便在以后的项目中方便复用。” - http://www.yiiframework.com/doc/guide/1.1/en/basics.module

我有很多需要用户的项目。每次都大同小异的数据库结构和功能。注册、登录、注销等。 Yii 告诉我可以重用模块。酷...让我们开始吧:

我有 3 个部分:用户、活动和网站。

在这个项目中,CampaignModule 与 UserModule 有关系(campaign_user [user_id,campaign_id])

WebsiteModule 与 CampaignModule 和 UserModule 有关系。

我想在具有注册、登录、编辑等功能的其他项目中重用 UserModule。

实际情况:使用gii创建模型后,每个模块之间都有关系和依赖关系。例如

UserModule: 'campaigns' => array(self::HAS_MANY, 'Campaign', 'user_id'),

要使用 WebsiteModule,必须包含 User- 和 CampaignModule。现在我什至必须包含 Website- 和 CampaignModule 才能使用 UserModule!

我还想在许多项目中更新 UserModule,并可能构建一个包含一些基本模块的框架。

规划这样的架构的正确方法是什么?

4

1 回答 1

1

有一个yii-user 模块,它们的作用是允许您在模块配置上为 User 模型指定其他关系:

/**
 * @return array relational rules.
 */
public function relations()
{
    $relations = Yii::app()->getModule('user')->relations;
    if (!isset($relations['profile']))
        $relations['profile'] = array(self::HAS_ONE, 'Profile', 'user_id');
    return $relations;
}

因此,您可以执行以下操作:

'modules'=>array(
    'user' => array(
            ...
            'relations' => array(
              'categories' => array(CActiveRecord::HAS_MANY, 'Category', "user_id"),
              'account' => array(CActiveRecord::HAS_ONE, 'Account', "user_id"),
            ),
            ...
        ),
  ),
于 2013-01-23T20:57:05.690 回答