sgostanyan / sg_entity_services
实体服务模块。
Requires
- php: >=7.0
- drupal/core: >=8.7
This package is auto-updated.
Last update: 2024-09-23 16:01:23 UTC
README
SG Entity Services 是一个用于处理 Drupal 实体的 Drupal 服务。
SgEntityStorageManager
### getEntities(string $entityType, array $bundles = NULL, array $ids = NULL)
根据给定的参数返回实体。
$entityType: 实体类型 ID
$bundles: 所需的实体包(可选)
$ids: 根据给定 ID 进行过滤(可选)
用法
Drupal::service('sg_entity_services.service')->getEntityStorageManager()->getEntities('node', ['article', 'event']);
createEntity(string $entityType, array $values, array $translations = NULL)
创建带有翻译的实体(可选)
$entityType: 实体类型 ID
$values: 字段数组
$translations: 翻译字段(可选)
用法
$fieldValues = [
'title' => 'Title',
'body' => [
'value' => 'summary text',
],
'field_tags' => [
[
'target_id' => 1,
],
],
];
$translationsValues = [
'en' => [
'title' => 'EN title',
'body' => [
'value' => 'English summary',
],
'field_tags' => [
[
'target_id' => 1,
],
],
],
'es' => [
'title' => 'ES title',
'body' => [
'value' => 'Spanish summary',
],
'field_tags' => [
[
'target_id' => 1,
],
],
],
];
Drupal::service('sg_entity_services.service')->getEntityStorageManager()->createEntity('node', $fieldValues, $translationsValues);
### addTranslations(EntityInterface $entity, array $translations)
为现有实体添加翻译。
$entity: 实体接口
$translations: 翻译字段
用法
$translationsValues = [
'en' => [
'title' => 'EN title',
'body' => [
'value' => 'English summary',
],
'field_tags' => [
[
'target_id' => 1,
],
],
],
'es' => [
'title' => 'ES title',
'body' => [
'value' => 'Spanish summary',
],
'field_tags' => [
[
'target_id' => 1,
],
],
],
];
$entity = Drupal::entityTypeManager()->getStorage('node')->load(46);
$entity = Drupal::service('sg_entity_services.service')->getEntityStorageManager()->addTranslations($entity, translationsValues);
SgEntityDisplayManager
### getViewModes(string $entityType)
返回给定实体类型的可用视图模式列表。
$entityType: 实体类型
用法
$viewModes = Drupal::service('sg_entity_services.service')->getEntityDisplayManager()->getViewModes('node');
### renderEntity(EntityInterface $entity, $viewMode = NULL)
返回给定实体的渲染数组。
$entity: 实体接口
$viewMode: 视图模式
用法
$renderArray = Drupal::service('sg_entity_services.service')->getEntityDisplayManager()->renderEntity($entity, 'teaser'));
### renderArrayToMarkup(array $renderArray)
返回给定渲染数组的 Markup 对象。
$renderArray: 渲染数组
用法
$renderArray = Drupal::service('sg_entity_services.service')->getEntityDisplayManager()->renderEntity($entity, 'teaser'));
$markup = Drupal::service('sg_entity_services.service')->getEntityDisplayManager()->renderArrayToMarkup($renderArray);
htmlTagRender($tag, $value, array $attributes = [])
返回给定标签元素的渲染数组。
$tag: HTML 标签类型
$value: HTML 标签的值
$attributes: HTML 属性数组
用法
$tagRender = Drupal::service('sg_entity_services.service')->getEntityDisplayManager()->htmlTagRender('a', 'click here', ['href' => 'https://drupal.org']);
imageStyleRender($fid, $imageStyle, $attributes = [])
返回给定图像 ID 和样式的渲染数组。
$fid: 图像文件 ID
$imageStyle: 图像样式 ID
$attributes: HTML 属性数组(可选)
用法
$imageRender = Drupal::service('sg_entity_services.service')->imageStyleRender(298, 'thumbnail', ['class' => ['thumb-style']]);
SgFileManager
### generateFileEntity($source, $filename, $destination = 'public://')
创建文件实体并返回文件 ID。
$source: 源文件夹(需要以反斜杠结尾)
$filename: 文件名
$destination: 文件目标位置,可以是 'public://' 或 'private://'(默认为 public://)。它可以包含子文件夹,需要以反斜杠结尾
用法
$fid = Drupal::service('sg_entity_services.service')->getFileManager()->generateFileEntity('public://sources/', 'tiger.jpg', 'private://animals/');
### getFileInfos($fid)
返回文件详细信息数组:MIME 类型、大小、绝对 URL、相对 URL、内部 URL、系统路径、文件使用情况。
$fid: 文件 ID
用法
$fileInfos = Drupal::service('sg_entity_services.service')->getFileManager()->getFileInfos(298);
### sanitizeFileSize($size)
返回格式化的文件大小。
$size: 字节大小的文件大小
用法
$fileInfos = Drupal::service('sg_entity_services.service')->getFileManager()->sanitizeFileSize(286567);
// $fileInfos = "287 Ko"
SgImageManager
### getImageStyles()
返回可用图像样式列表。
用法
$imageStyles = Drupal::service('sg_entity_services.service')->getImageManager()->getImageStyles();
getImageStyleUrl($fid, $imageStyle)
返回样式化图像 URL。
$fid: 文件 ID
$imageStyle: 图像样式 ID
用法
$imageUrl = Drupal::service('sg_entity_services.service')->getImageManager()->getImageStyleUrl(298, 'thumbnail');