CakePHP和Drupal 6需要互相交流,但是怎么样?

时间:2011-02-24 15:59:34

标签: drupal cakephp drupal-6 drupal-modules cakephp-1.3

我有一个CakePHP应用程序需要从Drupal(6)获取数据。具体来说,有一个自定义内容类型和一个需要与CakePHP共享的webform - 所以当添加该内容类型的新节点或提交webform时,Cake知道它。我不确定最好的方法,我提出了两种方法:

  1. 为相关模型提供备用数据源,并直接从Drupal数据库中读取。但是,Drupal表格是Drupally格式,我宁愿不写很多$ this-> Model-> find()s - 它会有点痛苦。我不完全了解Drupal存储所有内容的地方。
  2. 在Drupal中编写一些代码,以便在CakePHP数据库中以不同的格式保存数据。我不知道这有多容易 - 我更喜欢Cake比Drupal更快。我想我会使用hook_form_alter并在$ form [#submit]数组中添加一个函数?
  3. 有没有人建议这两个中哪一个会更好,或者是否有其他选择?我倾向于第二个想法。

    非常感谢,谢谢

2 个答案:

答案 0 :(得分:5)

我会在Drupal中创建一个Web服务API,并定期在Cake中运行批处理作业,该作业会点击API以获取新数据。试试这个模块:http://drupal.org/project/services

或者,如果您需要超级并发更新,请在Cake中创建一个API来接收数据,并在Drupal中创建一个模块,该模块将在提交时发送数据。

这样您就不必担心两者之间的数据库级共享。

答案 1 :(得分:0)

假设Drupal和CakePHP应用程序存在于同一台服务器上,我想我会考虑在现有的Drupal数据库中创建Cake表。这样,您就不必担心数据源,API或更新,因为您可以看到表格。

很多时候我不得不这样做,因为托管只有一个数据库实例。由于这个原因,Joomla和其他应用程序在表名前加上前缀。

对于表的 shape ,您可以在模型定义中配置Cake以正确读取表(通过指定非常规id和fk名称等。

始终尽量避免重复必须保持同步的数据。