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

时间:2012-11-15 20:31:05

标签: cakephp vendors

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

  • [cake](蛋糕的核心库)
  • [站点]
    • [网站1]
      • [应用]
      • [插件]
      • [供应商]
      • 的.htaccess
      • 的index.php
    • [site 2] (也有自己的应用,插件和供应商文件夹)
    • [网站3] (也有自己的应用,插件和供应商文件夹)

在我想要实现一些我希望在所有应用程序中使用的函数的情况下,我发现自己很多次,但到目前为止,我只是在每个站点内复制代码。我希望能够在一个地方声明这些功能,并能够从任何站点调用它们。我相信供应商可能与此有关,但我一直在查看食谱,我无法弄清楚如何在我的情况下使用它。

任何帮助将不胜感激!

UPATE

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

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

我可以使用供应商这样做,所以我在供应商中声明了这个功能(即 processLogin()),所有网站都可以使用该功能吗?如果是这样,怎么样?如果没有,还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

将它们粘贴在与蛋糕网站相同级别的供应商文件夹中,以您选择的名称命名(通常代理商名称或其他唯一标识符。)

在CakePHP 1.3中加载供应商文件的示例在Cookbook中解释:http://book.cakephp.org/1.3/en/view/943/Loading-Vendor-Files

但是,我建议升级到CakePHP 2,并将代码放在 lib 下的子文件夹中。