2011-05-30 81 views
2

它看起來像是可以使用自定義模塊的菜單回調,然後在頁面中使用ajax回調函數。 但在我浪費時間探索之前,我肯定有人肯定是以前做過這件事的。有小費嗎?如何使用Drupal中的JavaScript從節點頁面更新節點?

只需更新節點變量並調用field_attach_update()就足夠了嗎?那安全呢?

回答

2

出於安全:

可以確保該菜單鉤子使用正確的權限訪問

在菜單鉤:

$items['/ajax/%/edit'] = array(
    'title' => 'something', 
    'page callback' => 'your_edit_callback', 
    'page arguments' => array(1), 
    'access callback' => 'node_access', 
    'access arguments' => array('update', 1), 
    'type' => MENU_LOCAL_TASK, 
); 

function your_edit_callback($node_id){ 
//something that edits the node here, only user(s) with node_access will be able to get here. 
} 

有關節點訪問: *在確定訪問權限節點node_access()首先檢查 *用戶是否具有「旁路節點訪問」權限。這些用戶可以不受限制地訪問所有節點。用戶1將始終通過此檢查。

我個人從未使用過field_attach,但依賴於node_save。

$node = node_load($node_id); 
$node->field_fieldname[LANGUAGE_NONE][0]['value'] = "monkeys"; 
node_save($node);