首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多站点CakePHP 2.3安装中的共享控制器、模型和视图

多站点CakePHP 2.3安装中的共享控制器、模型和视图
EN

Stack Overflow用户
提问于 2013-01-02 17:41:30
回答 2查看 1.3K关注 0票数 0

我正在创建一个CakePHP 2.3高级安装程序(几个应用程序--网站--它们共享一个lib文件夹,所有蛋糕的核心文件都位于这里)。这没有任何问题,我只需要编辑每个应用程序的Config文件夹中的core.php文件,这样它就知道在哪里可以找到蛋糕文件了。文件系统看起来类似于:

代码语言:javascript
复制
[root]
    [cake-core-files]
    [websites]
        [website-1]
            [app]
            [plugins]
            [vendors]
        [website-2]
        ...
        [website-N]

事实上,这些不同的应用程序在某些方面是不同的(它们是不同的网站),但同时也有许多共同的东西(例如,一些模型、控制器、功能.)。我想要做的是,如果可能的话,让这些应用也共享一堆控制器,模型等,这样我就可以把它们放在一个地方,而不是现在复制它们为每个应用程序。

我见过供应商 plugins 在CakePHP中的概念(我实际上在这些网站中使用插件,但来自/app/plugins文件夹),但我不确定这在我的情况下是否有效,或者我将如何设置它。我想我的想法是在同样级别的蛋糕-核心文件和网站上有另一个文件夹(例如shared_objects),但我不知道如何配置蛋糕,或者如何从每个应用程序调用这些对象。

有什么想法吗?

编辑

基于下面的注释/响应,我尝试使用bootstrap.php中的App:build()函数来完成这个任务,但是我无法让它工作。这就是我所做的:

  1. 添加了一个新文件夹,我想把这些东西放在所有应用程序之间共享: 根共享-东西->新文件夹模型网站等.
  2. 将模型User.php放置在新文件夹中
  3. 在引导程序中添加了这一行: 应用程序::构建(数组(‘Model’=>数组(‘/path/to/shared-Model/Model’));
  4. 从原来的位置website-1/app/Model中删除了模型User.php

在完成这一步骤之后,似乎可以从shared-stuff文件夹正确地加载模型User.php (我已经测试了打印用户模型所列的App::objects('Model');,)。但是,它实际上不起作用,当我从UsersController ()函数中调用该模型时,登录无法工作(尽管我没有收到任何类型的错误,即使调试设置为2)。

此模型使用与默认配置不同的数据库配置(用户表位于与默认数据库不同的数据库中)。我不知道这是否重要。

有一件事是肯定的,如果我将相同的User.php模型保留在它原来的位置(User.php),它都可以正常工作,包括登录,所以我如何配置所有这些共享内容,而不是模型本身,这是一个问题。

知道我做错什么了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-03 20:35:39

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

编辑:太好了,它可以工作,但我认为蛋糕的官方文档中有一个小错误:所有路径都应该用目录分隔符终止!在cakephp的书中没有尾随斜杠。把它添加到你的应用程序::构建路径,一切都将完美地工作!

票数 3
EN

Stack Overflow用户

发布于 2013-01-04 01:54:06

您可以在核心插件/ dir中安装插件。

代码语言:javascript
复制
[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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14126587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档