【发布时间】: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 我绝对明白我没有正确地做到这一点。希望有一种简单的方法可以用我自己的扩展供应商类并更新底层表单,而无需重建扩展现有功能。