具有共享功能的CakePHP多站点文件系统组织

具有共享功能的CakePHP多站点文件系统组织,cakephp,vendors,Cakephp,Vendors,我在服务器上安装了一个CakePHP 1.3 mutli站点。每个站点都有自己的文件夹,它们都从同一个位置加载CakePHP核心库。这就是它的样子: [蛋糕](蛋糕的核心库) [网站] [现场1] [应用程序] [插件] [供应商] .htaccess index.php [site 2](还有自己的应用程序、插件和供应商文件夹) [site 3](还有自己的应用程序、插件和供应商文件夹) 等 我发现自己很多次都想实现一些我想在所有应用程序中使用的功能,但到目前为止,我只是在每个站点

我在服务器上安装了一个CakePHP 1.3 mutli站点。每个站点都有自己的文件夹,它们都从同一个位置加载CakePHP核心库。这就是它的样子:

  • [蛋糕](蛋糕的核心库)
  • [网站]
    • [现场1]
      • [应用程序]
      • [插件]
      • [供应商]
      • .htaccess
      • index.php
    • [site 2](还有自己的应用程序、插件和供应商文件夹)
    • [site 3](还有自己的应用程序、插件和供应商文件夹)
我发现自己很多次都想实现一些我想在所有应用程序中使用的功能,但到目前为止,我只是在每个站点中复制代码。我希望能够在一个地方声明这些函数,并能够从任何站点调用它们。我相信供应商可能与此有关,但我一直在查阅食谱,我不知道如何在我的案例中使用它

任何帮助都将不胜感激

UPATE

因此,通过查看供应商,在我看来(也许我错了),如果这些供应商文件中的函数不需要直接与其他CakePHP类(例如Session、Auth等)交互,那么它在我的情况下就可以工作。我将举一个我正在尝试做的事情的例子,也许这有助于更好地理解我在尝试什么

每个站点都有自己的登录系统(使用cake的Auth)。我想做的一件事是,当用户登录时(调用UsersController中的login()函数),让其中的一个函数对用户的用户名进行一些处理,然后调用会话->flash()函数在其中插入一条消息(消息根据该函数进行的处理而变化)。因此,此函数需要使用用户模型和会话模型


我可以使用供应商来实现这一点吗?因此,我在供应商中声明了这一函数(即processLogin()),并且所有站点都可以使用该函数?如果是,怎么做?如果没有,还有其他方法吗?

将它们粘贴在供应商文件夹中,与蛋糕站点处于同一级别,名称间隔在您选择的名称下(通常是机构名称或其他唯一标识符)

在CakePHP 1.3中加载供应商文件的示例在烹饪书中进行了说明:


但是,我建议升级到CakePHP 2,并将代码放在lib下的子文件夹中。通过升级,您可以考虑编写一个支持所有这些功能的应用程序,主要通过数据库或可堆叠插件来填充和维护;)谢谢你们的回复。问题是现在有20个站点,它们都是实时的,所以重新编写所有这些站点将花费很长时间。这仍然是我计划在未来做的事情,但现在我没有时间去做。我还更新了我的问题,因为通过查看供应商的资料,它可能不是我需要的,请阅读更新部分。再次感谢!升级时,您可以将CakePHP 2.0代码放在路线中的另一个文件夹中,然后逐个更新站点,设置
CAKE\u CORE\u INCLUDE\u PATH
常量以使用cake2文件夹或升级时/升级期间调用的任何文件夹。@MartinBean关于升级没有问题,但同时,有没有可能做我想做的蛋糕1.3?不确定;我已经有一段时间没有使用1.3了。我想你会想创建一个你的应用程序可以共享的Auth插件,而不是在应用程序之间复制代码。记住:干的。