CakePHP и Drupal 6 должны поговорить друг с другом, но как?


У меня есть приложение CakePHP, которое должно принимать данные из Drupal (6). В частности, существует один пользовательский тип контента и одна веб-форма, которые необходимо совместно использовать с CakePHP, поэтому, когда добавляется новый узел для этого типа контента или отправляется веб-форма, Cake знает об этом. Я не уверен, что это лучший способ сделать это, я придумал два подхода:

  1. Наличие альтернативного источника данных для рассматриваемых моделей и чтение непосредственно из базы данных Drupal. Однако таблицы Drupal находятся в формате Drupally, для которого я бы предпочел не писать много $this->Model->find()для - это будет немного больно. Я тоже не совсем понимаю, где Drupal хранит все.
  2. Написание некоторого кода на Drupal для сохранения данных в другом формате в базе данных CakePHP. Я не знаю, насколько это было бы легко - я больше разбираюсь в Cake, чем в Drupal. Я думаю, я бы использовал hook_form_alter и добавил функцию в массив $form[#submit]?

Есть ли у кого-нибудь советы по поводу какой из этих двух вариантов был бы лучше, или если есть другой вариант? Я склоняюсь ко второй идее.

Большое спасибо за помощь, спасибо

Author: Will, 2011-02-24

2 answers

Я бы создал API веб-сервисов в Drupal и периодически запускал пакетное задание в Cake, которое обращалось к API для получения новых данных. Попробуйте этот модуль: http://drupal.org/project/services

Или, если вам нужны супер-параллельные обновления, создайте API в Cake для получения данных и модуль в Drupal, который будет отправлять данные при отправке.

Таким образом, вам не нужно беспокоиться о совместном использовании на уровне базы данных между ними.

 5
Author: yitznewton, 2011-02-24 17:30:32

Предполагая, что приложения Drupal и CakePHP существуют на одном сервере, я думаю, что я бы посмотрел на создание таблиц Cake в существующей базе данных Drupal. Таким образом, вам не нужно беспокоиться об источниках данных, API или обновлениях, так как вы можете просто просматривать таблицы.

Много раз мне приходилось это делать, потому что хостинг поставляется только с одним экземпляром бд. Joomla и другие приложения добавляют префиксы к именам таблиц именно по этой причине.

Что касается формы таблицы, вы можете настройте Cake в определении модели для правильного чтения таблицы (указав нетрадиционные имена id и fk и т. Д.

Всегда старайтесь избегать дублирования данных, которые необходимо синхронизировать.

 0
Author: Leo, 2011-02-25 12:09:07