我正在创建一个CakePHP 2.3高级安装程序(几个应用程序--网站--它们共享一个lib文件夹,所有蛋糕的核心文件都位于这里)。这没有任何问题,我只需要编辑每个应用程序的Config文件夹中的core.php文件,这样它就知道在哪里可以找到蛋糕文件了。文件系统看起来类似于:
[root]
[cake-core-files]
[websites]
[website-1]
[app]
[plugins]
[vendors]
[website-2]
...
[website-N]事实上,这些不同的应用程序在某些方面是不同的(它们是不同的网站),但同时也有许多共同的东西(例如,一些模型、控制器、功能.)。我想要做的是,如果可能的话,让这些应用也共享一堆控制器,模型等,这样我就可以把它们放在一个地方,而不是现在复制它们为每个应用程序。
我见过供应商和 plugins 在CakePHP中的概念(我实际上在这些网站中使用插件,但来自/app/plugins文件夹),但我不确定这在我的情况下是否有效,或者我将如何设置它。我想我的想法是在同样级别的蛋糕-核心文件和网站上有另一个文件夹(例如shared_objects),但我不知道如何配置蛋糕,或者如何从每个应用程序调用这些对象。
有什么想法吗?
编辑
基于下面的注释/响应,我尝试使用bootstrap.php中的App:build()函数来完成这个任务,但是我无法让它工作。这就是我所做的:
在完成这一步骤之后,似乎可以从shared-stuff文件夹正确地加载模型User.php (我已经测试了打印用户模型所列的App::objects('Model');,)。但是,它实际上不起作用,当我从UsersController ()函数中调用该模型时,登录无法工作(尽管我没有收到任何类型的错误,即使调试设置为2)。
此模型使用与默认配置不同的数据库配置(用户表位于与默认数据库不同的数据库中)。我不知道这是否重要。
有一件事是肯定的,如果我将相同的User.php模型保留在它原来的位置(User.php),它都可以正常工作,包括登录,所以我如何配置所有这些共享内容,而不是模型本身,这是一个问题。
知道我做错什么了吗?
发布于 2013-02-03 20:35:39
我认为在多个网站之间共享一些控制器/模型是有用的,并且不需要插件:使用共享控制器/模型可以让您在需要时覆盖它。它应该发生,只是复制控制器/模型在网站的正确文件夹和系统应该使用它,而不是共享的一个!
编辑:太好了,它可以工作,但我认为蛋糕的官方文档中有一个小错误:所有路径都应该用目录分隔符终止!在cakephp的书中没有尾随斜杠。把它添加到你的应用程序::构建路径,一切都将完美地工作!
发布于 2013-01-04 01:54:06
您可以在核心插件/ dir中安装插件。
[root]
[lib]
[Cake]
[Plugins]
[Available]
[To]
[All]
[website-1] // the 'app' dir -> https://github.com/cakephp/cakephp/tree/master/app
[plugins]
[vendors]
[website-2] // you can have many of them named anything, 'app' is just one.
...
[website-N]此文件夹特别将使插件可用于任何使用蛋糕库的应用程序。
例:
看看这。将app复制到website-1,重复到website-n。
https://stackoverflow.com/questions/14126587
复制相似问题