Yii:通过每个用户的站点配置最大化代码重用

标签 yii

我为之工作的客户有一个用 Yii 编写的 CMS。目前,他们的一部分业务是定制 CMS 以满足每个客户的特定需求。大约 90% 的代码被重用,主要是通过从一个目录复制和粘贴到另一个目录。虽然我一直在从事这个项目,但我不得不多次将更改合并到共享代码库中。

这些站点中的所有或大多数都托管在同一台服务器上,并且似乎使用单一登录会更有意义,这会改变我们基于登录显示的功能。在某些情况下,这意味着覆盖整个或部分 View (例如,_form.php 可能会因客户而异),包括 Controller 和模型。大多数情况下,这意味着添加一个新 Controller 来实现为该客户端编写的一些功能。

我读到这里有一个前端和后端站点:http://www.yiiframework.com/wiki/63/organize-directories-for-applications-with-front-end-and-back-end-using-webapplicationend-behavior但这似乎不合适(例如,我不希望每个人都使用不同的 start php 文件)

理想情况下,我会让用户登录并获得一个站点 ID,它将过滤共享 MVC 对象中的数据,并专门为他们添加那些,或者在必要时覆盖那些

直觉上,这样的事情似乎是有道理的:

共享 Controller 在这里:

/protected/controllers

client1 的覆盖和添加到这里:
/protected/controllers/client1

或者:
/protected/client1/controllers

但我不确定如何让 Yii 以最有效和易于管理的方式做到这一点。这是要与 Yii 一起工作的东西,还是我以非故意的方式破坏它?如果它会起作用,那么完成它的最佳方法是什么,以便从现在起六个月后我清楚,或者一些随机的开发人员取代我?

最佳答案

你知道 RBAM 吗?

使用基于角色的访问,您可以以或多或少的粒度方式分析您的应用程序

关于Yii:通过每个用户的站点配置最大化代码重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363661/

相关文章:

php - 在没有路由的情况下执行 Yii 模块

php - 如何给表格白色背景色 - Bootstrap, Yii

mysql - 匹配 IN 子句中的所有值

Yii。 Twig 模式中的国际化

yii - 在 PHPStorm 中调试 Yii 控制台应用程序

php - 时间戳列未存储为我想要的时区

php - 从 PHP 中的字符串名称调用静态方法

php - Yii2 组件将数据传递给 __construct

php - Yii 框架单选按钮列表

php - Yii1 MYSQL 连接 4 个表,其中类和组