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

发布于 2024-11-10 14:09:32 字数 139 浏览 0 评论 0原文

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

仅更新节点变量并调用 field_attach_update() 就足够了吗?那么安全性又如何呢?

It looks like it is possible using a custom module with a menu callback, and then an ajax callback function from the page.
But before I waste time exploring, I'm sure someone must have done this before. Any tips?

Is it adequate to just update the node variable and call field_attach_update()? And what about security?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悍妇囚夫 2024-11-17 14:09:32

为了安全起见:

您可以确保菜单挂钩使用正确的权限访问

在菜单挂钩中:

 $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);

For security:

You can make sure that the menu hook uses the correct permission access

In menu hook:

 $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.
}

about node access:
* In determining access rights for a node, node_access() first checks
* whether the user has the "bypass node access" permission. Such users have
* unrestricted access to all nodes. user 1 will always pass this check.

I have personally never used field_attach, but relied on node_save.

$node = node_load($node_id);
$node->field_fieldname[LANGUAGE_NONE][0]['value'] = "monkeys";
node_save($node);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文