Ошибка вставки крючка Drupal

#drupal #insert #drupal-7 #hook

#drupal #вставить #drupal-7 #ошибка

Вопрос:

У меня есть крючок вставки, который улавливает узлы всякий раз, когда пользователь добавляет узел. Итак, вот мой код:

 function blah_insert($node){
     $record = array(
            'nid' => (int) $node->nid
     );
     drupal_write_record('table_name', $record);
}
  

схема::

 table_name(
     nid     int primary key not null
)
  

Выполнение проверки возвращаемого значения drupal_write_record приводит к FALSE. db_query также не работает. var_dump подтверждает, что все поля находятся там, где они должны быть.

Узлы правильно вставляются в таблицы узлов, но не в таблицу, которая определяется схемой в моем установочном файле (конечно, не так, как схема, которая у меня есть выше — nid определяется как int и все другие соответствующие поля).

У кого-нибудь есть какие-либо идеи относительно того, что происходит?

Ответ №1:

  1. Убедитесь, что ваш модуль установлен и включен
  2. Убедитесь, что имя вашего модуля определенно названо blah (или что бы вы ни ставили перед _insert
  3. Убедитесь, что вы используете правильный хук … если ваш модуль не отвечает за определение типа контента (т. Е. Модуля ‘node’), То вы используете неправильный. Из документации hook_insert : «Этот перехват вызывается только в модуле, который определяет тип содержимого узла». Возможно, вы ищете hook_node_insert() вместо этого, который реагирует на вставку узла любого типа.
  4. Когда вы внедряете какие-либо перехваты в свой модуль, убедитесь, что после этого вы очистили кеши, в зависимости от того, какую версию Drupal вы используете, эти реализации могут быть кэшированы для более быстрого доступа и не будут обнаружены, пока этот кеш не будет очищен.
  5. Убедитесь, что ваша пользовательская таблица действительно существует в базе данных! Если не захватить модуль разработки, установите его и посетите /devel/ reinstall, где вы можете вызвать полную переустановку вашего модуля.

После того, как вы проверили те, которые по-прежнему не работают, это свидетельствует о более серьезной проблеме с вашей установкой Drupal … если ваша схема такая, как вы сказали выше, тогда нет причин drupal_write_record() , по которым она не будет работать, если функция действительно выполняется.

Комментарии:

1. да, я уже нашел проблему, это было какое-то странное соглашение об именах. Указание на hook_insert() тоже помогает. Спасибо!