2011-05-30 87 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);