2011-10-06 80 views
0

我有一個插入鉤子,只要用戶添加一個節點就會捕獲節點。 因此,這裏是我的代碼:Drupal插入鉤子失敗

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結果的假返回值進行檢查。 db_query也不起作用。 var_dump證實所有的字段都是它們應該是的地方。

節點正在正確插入到節點表中,但不是由我的安裝文件中的模式定義的表(不是像我上面的模式那樣寫的 - nid被定義爲int並且所有其他相關領域)。

有沒有人對發生了什麼有什麼想法?

回答

1
  1. 確保您的模塊已安裝並啓用
  2. 確保您的模塊名稱是絕對命名blah(或任何你把以前_insert
  3. 確保您使用的右鉤拳..如果你的模塊不負責定義一個內容類型(即'節點'模塊),那麼你使用的是錯誤的。從hook_insert的文檔:「這個鉤子只在定義節點內容類型的模塊上被調用「這可能是因爲你正在尋找hook_node_insert(),它會響應插入任何類型的節點。
  4. 當你在你的模塊中實現任何鉤子時,確保你事後清除緩存,具體取決於你使用的Drupal的版本,這些實現可以被緩存以便更快地訪問,並且直到該緩存被清除後纔會被拾取。
  5. 檢查您的自定義表是否確實存在於數據庫中!如果不抓取devel module,請安裝它並訪問/ devel/reinstall,在其中可以調用完整的模塊重新安裝。

檢查完這些,如果是仍然不起作用它的症狀與你的Drupal安裝一個更大的問題......如果你的模式是因爲你說這是上面則沒有理由如果函數確實正在運行,則drupal_write_record()將不起作用。

+0

是的我已經發現這個問題,這是一些奇怪的命名約定。指出hook_insert()也有幫助。謝謝! –