【问题标题】:Drupal8 module development: hook_node_access not calledDrupal 8 模块开发:未调用 hook_node_access
【发布时间】:2016-05-04 07:32:20
【问题描述】:

对于我当前的站点,我有一个将用户存储在实体引用字段中的内容类型。我想允许此字段中引用的用户编辑该节点的数据。在 drupal7 中,我会使用 node_access 钩子来做到这一点 - 我不会在 drupal8 中工作。

这是我的钩子的演示代码 - 出于测试目的,我想禁止一切。但是它永远不会被调用,并且不 - 我没有以 user1 身份登录。还重置了缓存,再次卸载并安装了模块并重建了权限 - 似乎没有什么能让这个钩子起作用。

function mymodule_node_access(\Drupal\node\NodeInterface $node, $op, \Drupal\Core\Session\AccountInterface $account) {
    $access = new AccessResultForbidden();
    return $access;
}

我的问题是为什么从来没有调用过这个钩子——如果现在有了 drupal 8 更好的方法呢? 任何帮助将不胜感激。

最好的问候, 兰巴赞巴

【问题讨论】:

  • 这方面有什么更新吗?

标签: hook drupal-8


【解决方案1】:

永远不会为用户 1 调用此钩子,因为他绕过了所有访问控制。

尝试匿名测试或作为其他角色进行测试。

【讨论】:

  • 对于任何拥有“绕过内容访问控制”权限的人,它也不会被调用。
【解决方案2】:

试试下面的命令。需要工具“drupal 控制台”。

drupal node:access:rebuild

【讨论】:

    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 2023-03-03
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多