如何在Drupal中使用javascript从节点页面更新节点?

时间:2011-05-30 09:50:57

标签: javascript drupal drupal-7

看起来可以使用带有菜单回调的自定义模块,然后使用页面中的ajax回调函数。 但在我浪费时间探索之前,我确信有人必须先做过这件事。有小费吗?

仅更新节点变量并调用field_attach_update()是否足够?那安全呢?

1 个答案:

答案 0 :(得分: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);