【问题标题】:Extending Yii2 Webvimark user extension扩展 Yii2 Webvimark 用户扩展
【发布时间】:2017-07-25 02:53:58
【问题描述】:

我正在使用带有 Webvimark 用户管理扩展的 Yii2 基本模板。我在“用户”表中添加了几个附加字段,并希望以一种在我更新应用程序时不会被踩到的方式将它们公开给应用程序。

例如,如果用户是客户,他们将在“客户”模型中拥有关联记录,并且在 root\vendor\webvimark\user-management-module\models\User.php 中我会添加:

public function getCustomer()
{
    return $this->hasOne(Customer::className(), ['customer_id' => 'customer_id']);
}

我还做了一些其他修改,例如将“customer”列添加到 root\vendor\webvimark\user-management-module\views\user\view.php,并将选择添加到 _form。 php表单等

我认为,理想情况下,这些类型的修改应该放在 ..\vendor 文件夹之外的某个地方,因为当我更新 webvimark 扩展时它们会被覆盖。

我对 Yii2、框架和命名空间有点陌生。我想做的是,供应商文件夹中需要修改的任何文件都将存放在 \components\user (或其他)中,并使用供应商文件夹扩展适当的文件。这很容易吗?做这种事情的“最佳”方式是什么?

提前感谢您的帮助。

【问题讨论】:

  • 您永远不应该更新供应商文件夹中的代码。您需要在您的应用程序中创建一个新模型并扩展 webvimark\user-management-module\models\User
  • @KevinP 我绝对明白我没有正确地做到这一点。希望有一种简单的方法可以用我自己的扩展供应商类并更新底层表单,而无需重建扩展现有功能。

标签: php yii2 webvimark


【解决方案1】:

如果有人感兴趣,我走的是完全不同的路线。我将 webvimark 用户管理模块 fork 到我自己的 github 中,并在那里进行了更改。

然后我更新了我的 composer.json 文件,让主​​应用程序指向我的 fork:

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/pascoea/user-management"
    }
  ],

并在“require”标题下将用户管理模块更改为在我的 fork 中使用 dev-master 分支:

"require": {
    ...
    "webvimark/module-user-management": "dev-master",
    ...
},

运行“作曲家更新”后,我开始做生意了。

更多信息在这里:https://getcomposer.org/doc/02-libraries.md#publishing-to-a-vcs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多