分享控制器,在多站点CakePHP的2.3安装模型和视图(Share controllers, mo

2019-11-01 08:47发布

我创建一个CakePHP的2.3高级安装(几个应用程序-websites-共享一个相同的lib文件夹,所有的蛋糕的核心文件的位置)。 这工作没有任何问题,我只是编辑的配置文件夹中的文件core.php中的每个应用程序,所以它知道在哪里可以找到蛋糕的文件。 该文件系统看起来是这样的:

[root]
    [cake-core-files]
    [websites]
        [website-1]
            [app]
            [plugins]
            [vendors]
        [website-2]
        ...
        [website-N]

这些不同的应用程序实际上在某些事情上的不同(它们是不同的网站),但在同一时间有很多东西是共同所有的人(例如某些机型上,控制器,功能...)的。 我想怎么办,如果可能的话,就是有这些应用程序也分享了一堆控制器,模型等,这样我可以把它们放在一个地方,而不是现在复制他们为每个应用程序。

我已经看到了CakePHP的供应商插件 (实际上我用的插件在这些网站,但是从/应用/ plugins文件夹)的概念,但我不知道是否会在我的情况下工作,或如何我会成立这件事。 我猜的想法是有另一个文件夹(例如[shared_objects])在[蛋糕-core文件]和[网站]相同的水平,但我不知道我怎么会必须配置蛋糕做或如何调用每个应用程序的对象。

有任何想法吗?

编辑

根据该意见/低于我的反应正在努力做到这一点,使用App:在bootstrap.php中构建()函数,但我不能得到它的工作。 这是我做了什么:

  1. 增加了,我想把所有的东西应用程序之间共享一个新的文件夹:

    [根] [蛋糕-core文件] [共享的东西] - >新建文件夹[产品型号] [配置] [网站] [网站-1]等..

  2. 放置在模型user.php的新文件夹内[共享东西/型号]

  3. 新增的引导这一行:

     App::build(array('Model' => array('/path/to/shared-stuff/Model'))); 
  4. 删除的模型user.php的从其原始位置[网站-1 /应用/型号]

在此之后的步骤,它似乎工作,user.php的从[共享东西]文件夹正确地装入了模型(I已经测试在打印应用::对象(“模型”);,用户模型列出)。 但是,它实际上不工作,当我打电话从UsersController该模型在login()函数,登录不工作(虽然我没有收到任何类型的错误,甚至与调试设置为2)。

该模型使用一个数据库配置从默认之一( 用户表位于不同的数据库比默认的一个)不同。 我不知道这是否很重要。

有一两件事是肯定的,如果我离开完全相同user.php的模型在原来的位置([网站-1 /应用/型号]),这一切工作正常,包括登录,因此它与我如何尝试配置问题所有这些共享的东西,而不是模型本身。

任何想法我究竟做错了什么?

Answer 1:

我认为这可能是共享多个网站之间的一些控制器/模型有用,并做到这一点无需插件:使用共享控制器/模型可以让你在需要时将其覆盖。 它应该只是发生在复制网站的正确的文件夹控制器/模型和系统应该使用它而不是共享一个!

编辑:太好了,它的工作原理,但我认为这是蛋糕的官方文档中的一个小错误:所有的路径应以目录分隔符终止! 在CakePHP的书有没有斜线。 将它添加到您的应用程序::构建路径,一切都会很好地工作!



Answer 2:

您可以在核心插件/目录插件

[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]

此文件夹的具体使用将蛋糕LIB使插件提供给任何应用程序

例如:

看看这个 。 复制appwebsite-1重复直到website-n



文章来源: Share controllers, models and views in multisite CakePHP 2.3 installation