0

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

  • [cake](cake 的核心库)
  • [网站]
    • [网站 1]
      • [应用程序]
      • [插件]
      • [供应商]
      • .htaccess
      • 索引.php
    • [站点 2] (也有自己的应用程序、插件和供应商文件夹)
    • [站点 3] (也有自己的应用程序、插件和供应商文件夹)
    • ETC

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

任何帮助将非常感激!

更新

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

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

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

4

1 回答 1

0

将它们粘贴在cakesites同一级别的vendor文件夹中,以您选择的名称(通常是代理名称或其他唯一标识符)命名空间。

在 CakePHP 1.3 中加载供应商文件的示例在此处的 Cookbook 中进行了说明:http: //book.cakephp.org/1.3/en/view/943/Loading-Vendor-Files

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

于 2012-11-15T20:40:07.230 回答