#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:
- Убедитесь, что ваш модуль установлен и включен
- Убедитесь, что имя вашего модуля определенно названо
blah
(или что бы вы ни ставили перед_insert
- Убедитесь, что вы используете правильный хук … если ваш модуль не отвечает за определение типа контента (т. Е. Модуля ‘node’), То вы используете неправильный. Из документации
hook_insert
: «Этот перехват вызывается только в модуле, который определяет тип содержимого узла». Возможно, вы ищетеhook_node_insert()
вместо этого, который реагирует на вставку узла любого типа. - Когда вы внедряете какие-либо перехваты в свой модуль, убедитесь, что после этого вы очистили кеши, в зависимости от того, какую версию Drupal вы используете, эти реализации могут быть кэшированы для более быстрого доступа и не будут обнаружены, пока этот кеш не будет очищен.
- Убедитесь, что ваша пользовательская таблица действительно существует в базе данных! Если не захватить модуль разработки, установите его и посетите /devel/ reinstall, где вы можете вызвать полную переустановку вашего модуля.
После того, как вы проверили те, которые по-прежнему не работают, это свидетельствует о более серьезной проблеме с вашей установкой Drupal … если ваша схема такая, как вы сказали выше, тогда нет причин drupal_write_record()
, по которым она не будет работать, если функция действительно выполняется.
Комментарии:
1. да, я уже нашел проблему, это было какое-то странное соглашение об именах. Указание на hook_insert() тоже помогает. Спасибо!