1

在drupal 8的module.routing.yml文件中,函数“node.view”在哪里

_entity_access: 'node.view'

来源: https ://api.drupal.org/api/drupal/core!modules!book!book.routing.yml/8

提前谢谢你

4

1 回答 1

5

简单地说,在 Drupal 8_entity_access: node.view中的module.routing.yml文件中意味着“调用node实体中定义的访问处理程序并view作为正在检查访问的操作提供”。

访问处理access程序在实体类型注释的处理程序条目中定义。例如对于节点实体

/**
 * Defines the node entity class.
 *
 * @ContentEntityType(
 *   id = "node",
 *   label = @Translation("Content"),
 *   bundle_label = @Translation("Content type"),
 *   handlers = {
 *     "access" = "Drupal\node\NodeAccessControlHandler",
 *   }
 * )
 */

因此,查看回调处的代码\Drupal\node\NodeAccessControlHandler::access()$operation参数包含该值'view'

public function access(EntityInterface $entity, $operation, $langcode = LanguageInterface::LANGCODE_DEFAULT, AccountInterface $account = NULL, $return_as_object = FALSE) {
  $account = $this->prepareUser($account);

  if ($account->hasPermission('bypass node access')) {
    $result = AccessResult::allowed()->cachePerPermissions();
    return $return_as_object ? $result : $result->isAllowed();
  }
  if (!$account->hasPermission('access content')) {
    $result = AccessResult::forbidden()->cachePerPermissions();
    return $return_as_object ? $result : $result->isAllowed();
  }
  $result = parent::access($entity, $operation, $langcode, $account, TRUE)->cachePerPermissions();
  return $return_as_object ? $result : $result->isAllowed();
}
于 2015-06-14T00:16:00.157 回答