【问题标题】:CakePHP One Core, One App, One Database, Multiple Domains & Multiple ThemesCakePHP 一核一应用一数据库多领域多主题
【发布时间】:2013-07-26 16:54:15
【问题描述】:

我是 CakePHP 世界的新成员,我只创建/遵循了博客教程,并与用户一起扩展了它。我一直在阅读 2.0 的书以更加熟悉该框架。

在我承诺转向 CakePHP 之前,我有几个问题。

目前,我开发了一个多域/多主题的 CMS 系统,它是程序 PHP。通过这样做,我能够在具有多个域和主题的单个数据库上创建单个系统。

我获取$_SERVER['SERVER_NAME'] 并在“品牌”表中查找它,然后返回brand_id 和主题目录。然后,我在所有 SQL 查询后加上“and brand_id = X”。

由于当前平台在规模和复杂性方面变得不堪重负,我希望转向 Cake。

总之...

我可以创建一个具有一个核心、一个应用、一个数据库的应用程序,可以服务于多个领域和主题吗?

我会使用$_SERVER['SERVER_NAME'] 查找域并返回brand_id 和主题吗?

我真的不想拥有多个数据库,因为如果我们有大量客户对所有数据库进行更改可能会很耗时。

我当然不希望拥有多个控制器和多个模型,但在某些情况下,如果客户有特定要求,我们会想要定制视图。

任何让我入门的基本配置指导都会很棒。每个模型会“属于”一个“品牌”吗?您将如何“服务”品牌?

Name: Brand1 Domain: www.brand1.com ThemeDir: Brand1
Name: Brand2 Domain: www.brand2.com ThemeDir: Brand2

【问题讨论】:

    标签: cakephp cakephp-2.1


    【解决方案1】:

    我有类似的情况,我正在使用通配符子域。我通过做一些事情来实现这一点。

    1. 在我的引导文件中,我正在读取我的子域并将其分配给 cakePHP 缓存。就我而言,我正在打电话:

      Configure::write('SubdomainHTTP', $myvalue);

    这将是您的域名。

    1. 我在我的 routes.php 文件中加载了一个名为 subdomainRoute.php 的文件。该文件检查以确保在我的案例中的路由或子域存在于数据库中。最后使用 Configure::write 编写子域名和主题名称,就像第 1 步一样。

      App::uses('SubdomainRoute', 'Routes');

    2. 我在这里将它们粘合在一起,在我的 AppController.php 中,我阅读了我在步骤 2 中编写的信息。特别是主题名称并使用:

      $this->theme = $yourtheme;

    这应该允许您拥有不同的域名主题。鉴于您必须有一个数据库来保存域名列表和主题名称。

    【讨论】:

    • 感谢您提供非常有帮助的反馈。您如何处理 SQL 查询?在我的情况下,我看到这是... Select * from Users where username = "abc" and user_brand_id = 10;如何指定brand_id 来隔离数据?
    • 每个域名“xy.com”都会有一个品牌“mybrand”,品牌就是主题。我只想把它放在一张桌子上,不要打扰关联。除非你能找到一种方法来证明需要一个关联。可以使用 php $_SERVER['HTTP_HOST'] 查找“xy.com”
    • 对不起,我觉得我说得不够清楚。在单个数据库中,我将拥有多个品牌内容。因此,在帖子表中,我将有专门针对 Brand1 的帖子,然后是专门针对 Brand2 的帖子,依此类推。所以我需要知道的是,一旦我确定了品牌以及品牌 ID,我如何在帖子表中使用它。谢谢。
    • 我想我明白了。我假设brand1和brand2有你想要的特定主题?如果是这样,我会这样做。在 post 控制器的 beforefilter 中读取已预加载的 configure::write 值(brand_id)。然后,您可以通过引用您在 beforefilter 中设置的 brand_id 来仅从您的帖子控制器中的帖子表中加载关联的数据。希望我理解正确
    • 这听起来很对。所以 Brand1 有一个名为 Brand1Theme 的主题,我可以根据您的代码设置它。你能给我一个代码示例,说明如何使用带有品牌 ID 的 beforeFilter 在 Posts Controller 中使用它吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多