Questions tagged «entities»

自Drupal 7以来使用的术语中的节点,注释,分类术语和用户通常称为“实体”。

1
如何从实体参考字段获取参考实体ID的数组
我有一个基数entity_reference字段BaseFieldDefinition::CARDINALITY_UNLIMITED。我想要一个参考实体ID的列表。我知道可以通过调用来获取所有引用的实体$x->referencedEntities(),但是我只希望id可以在以后加载实体。目前,我正在这样做: $a = []; foreach ($entity->autoren as $v) { $a[] = $v->target_id; } $this->setCurrentAnwaltReferenzen($a); 有谁知道像D7(-> raw())那样更好的解决方案? 谢谢
10 8  entities 

4
根据其他字段自动填充字段
我的情况非常复杂,需要一些建议。我有一个内容类型my_content,它具有一个附加的字段收集字段field_mycollection,它具有一个引用用户的实体引用字段field_my_userreference,一个电话字段field_my_phone,一个文本字段field_my_text和另一个文本字段field_my_anothertext。 My Content |_ field_mycollection |_ field_my_userreference |_ field_my_phone |_ field_my_text |_ field_my_anothertext 该用户实体也有字段field_my_phone,field_my_text并且field_my_yetanothertext其中后者具有不同的机器名。 如果要my_content在field_my_userreference用户中选择“ 编辑/添加”形式,我要执行的操作应从所选用户的数据中自动填充其他字段。自动填充的字段仍应可编辑。 我怎样才能实现这个目标?如果可能的话,我想使用进行一些编码hook_form_FORM_ID_alter()。
10 7  entities 

2
以编程方式获取实体引用字段的所有名称
示例:我想获取节点5的field_tags内的所有标签名。 我可以通过$ node-> field_tags-> getValue()获得target_id ; 但是问题是,我不知道target_id值属于哪个实体。可以是节点ID,术语ID,用户ID。没有该信息,我将无法使用target_id来获取标签的名称。 如何获得实体引用字段的所有名称?
10 8  entities 

5
我如何找到可用的公共方法?
我发现使用Drupal 8的最大问题是我无法获取所需的数据。Drupal 8希望我使用公共方法,而不是通过对象手动向下钻取。问题是,我无法弄清楚获得可用方法列表的一致方法!(它们神奇地存在,我觉得我应该知道它们)。= 对于此示例,假设我有一个带有视频字段的内容类型。我需要在该字段中获取视频文件的原始URL。 因此,我将从节点ID($ nid)开始,以某种方式我必须弄清楚如何加载该节点。这还不错,因为有很多示例。所以我做类似的事情$node = \Drupal\node\Entity\Node::load($nid);。 到目前为止,一切都很好。然后,我需要获取视频字段(field_main_video)的值。这使我永远都想不通,因为'net周围存在冲突的文档。最终我发现我必须做这样的事情(因为它是一个多值项): $video = \Drupal\node\Entity\Node::load($nid)->field_main_video->getValue(); ...然后遍历数组等。使用kint也不帮助我找到这个。因为例如,如果我kint($node)查看方法下的内容,则不会在其中看到getValue()。仍然不可怕,因为周围有足够的示例可以弄清楚。 不过,当我深入研究时,我不知道(这是重要的部分)是,不是获取视频字段实体ID,而是加载实体,然后在实体中找到“ uri”字段,等等(例如我在D7中会:)有一种方法可以让我在同一行代码中全部获取URI! $url = \Drupal\node\Entity\Node::load($nid)->field_main_video->entity->getFileUri(); 但是我怎么可能知道这个getFileUri()存在呢? 我在博客文章中偶然发现了它。确实,这样做确实比在D7中更容易获得URI……但前提是您(神奇地)知道对象的每个“层”都有哪些方法。 最后,在这个示例中,我想问:如何以一种易于阅读和理解的方式为对象的每个级别找到所有公共方法? 注意,似乎应该有一种以drupal为中心的方式(即devel模块),而不是手动搜索api.drupal.org或使用特定于IDE的方式?
9 8  entities 

2
如何为现有字段编写其他字段格式化程序
我想为现有的字段类型编写一个新的字段格式化程序。我不想替换任何现有的格式化程序,但提供了一个新选项。 还是我最好使用theme_preprocess_field()进行较小的改动?但这似乎很难维护,我想保持我的内容编辑器选项处于打开状态(并在GUI中)。 有人可以指出一个正确的方法示例吗?
9 entities 

4
迷上了其他模块的字段格式化程序?
我目前正在尝试在我的Drupal 7网站上实现一个节点引用的图像字段,该字段将根据渲染前的编程逻辑来更改其“查看模式”。当前,正在通过其显示模式设置在多种内容类型上呈现字段,每种内容都使用字段格式化程序“ Rendered node”。 第一次尝试 我的第一个想法是实现以下内容,考虑一个钩子就是一个钩子就是一个钩子: function HOOK_field_formatter_view( $entity_type, $entity, $field ... ){ switch ($display['type']) { case 'node_reference_node': /* Programatical logic here to modfy field render settings */ break; } } 显然是将HOOK替换为我的模块名称。 上面的代码是否会在原始函数之前或之后触发并不重要node_reference_field_formatter_view,node_reference.module因为我可以完全覆盖其输出,或者希望在渲染之前修改其值。唯一的问题是,上述挂钩似乎仅在每个模块的基础上起作用-即它不在站点范围内,因此基本上不会为我的模块触发。 现在显然我可以编写自己的字段格式化程序来输出渲染的节点。但是考虑到已经存在一个浪费,这似乎有点浪费。 其他方法 我的其他方法涉及到HOOK_preprocess_node,HOOK_preprocess_field但前一种方法不包含任何view_mode信息,而后者包含至少5种不同的复杂结构,这些结构都引用了view_mode不同级别的属性-感觉很麻烦,必须修改它们各自的属性。价值观。即使更改了某些view_mode属性,生成的图像也不会更改。 题 是否有人知道在字段格式化程序渲染(contrib模块的)并按每页请求更改其设置之前的一种干净方法,即不必更改实际内容类型的永久视图模式设置?
9 entities 

5
如何以编程方式呈现尊重视图模式设置的节点字段?
我想在一个块内渲染一个节点的字段。它的工作方式如下: <?php if ($node) { if (isset($node->field_body_secondary) && $field = $node->field_body_secondary->value) { $markup = render($field); $build = array( '#type' => 'markup', '#markup' => $markup, ); } } return $build; 但这不是100%,就好像我只是正常渲染该字段一样,使它在查看模式设置中可见。
9 entities  8 

1
发送表格到树枝模板
如何在Drupal 8中将表单传递给树枝模板? 例如,我得到这个: 表格:mymodule / src / Form / MyForm.php 然后在我的控制器上: public function myController() { ?????? return [ '#theme' => 'mytemplate', ?????? ]; } mytemplate.html.twig {{ ????? }}
9 entities  8  theming 

5
使用基于参考的模块而不是分类法模块的优点或缺点是什么?
我想知道如何决定使用核心分类标准模块还是实体引用模块? 我以前没有使用实体引用模块,但是在10-15个网站上使用了分类法模块(和一些相关模块)。 使用基于参考的模块而不是分类法模块的优点或缺点是什么? 最近,我开始建立一个杂志档案网站。 有很多杂志。这些杂志都有问题。每期都有文章。 这里最小(也是最深)的部分是文章。 文章 页码(范围): 标题: 作者: 文章类型: 关键字: 杂志: 问题: 问题 发行数量: 封面图片: 日期(已发布): 杂志: 杂志 描述: 封面图片: 这里,(至少)有两种方法可以实现此网站: 1.将有一个称为的内容类型article,所有其他类型(发行,杂志,作者)将为分类术语(分层)。在发行和杂志等之间会有一个等级。 2.内容类型很多:文章,期刊,杂志,作者。在创建文章时;问题,杂志和作者等均可参考。 因此,从理论上讲,这两种方法似乎非常相似。 有没有人遇到过类似的情况,请问您选择哪种方法,为什么?


3
在自定义模块中通过文件字段以编程方式创建内容类型
我正在编写一个自定义模块,这是我之前做过的,但这是我第一次尝试使用字段创建内容类型。我实现了hook_node_info,内容类型显示在admin_menu下拉列表中的内容类型列表中,但是当我浏览到admin/structure/types它时未列出。 我实现了hook_install,并获取了在另一个SO问题上发现的一些代码。我已经将代码打印出一些调试信息到我的错误日志中,并且看起来一切正常,但是当我浏览到“结构内容类型”时,它没有显示我添加的字段。 这是钩子: function mymod_node_info() { return array( 'mymod_content' => array( 'name' => t('My Mod'), 'base' => 'mymod_content', 'description' => t('A Description'), ) ); } function mymod_install() { error_log('mymod_install'); $types = node_type_get_types(); if ( ! field_info_field('field_mymod_myfile') ) { $field = array( 'field_name' => 'field_mymod_myfile', 'type' => 'file', ); $created_field = …

5
如何正确删除字段集合?
Drupal版本:7.21 字段收集模块版本:7.x-1.0-beta5 简短说明:我正忙于尝试以编程方式导入字段集合,但是在删除其中一些字段时,总会剩下一些“伪”字段集合。 详细说明:我的用户的个人资料上有一个字段收集字段。该字段集合包含3个文本字段。我想将数据从自定义sql数据库导入到用户的字段集合中。该字段集合可以具有多个值。当我第一次导入数据时,一切正常,我在字段集合的字段中看到了数据。大。 但是,这是棘手的部分。假设我为一个特定用户从定制数据库中导入了5行。它们被添加到字段集合中,因此此字段集合有5个项目,每个项目包含3个字段。然后,从自定义数据库中删除一些行,以使该用户仅剩下3行。我再次运行导入,更新了字段集合的前3个项目,但是接下来剩下的是前一次导入的2个项目。应该删除它们,因为我只有3个导入行,但仍然有5个字段收集项。 因此,我尝试删除这些字段收集项,但始终剩下一个或多个项。当我查看用户个人资料时,这些字段为空,但那里还是有东西。假设此时我在自定义数据库中为该用户添加了5个新行,因此该用户总共有8行。然后,我再次运行导入。前3个项目得到更新,但是当我尝试添加第4行时,它仍然从第4个字段集合项中获取实体ID,尝试对其进行更新,但失败并返回此错误: Fatal error: Call to undefined method stdClass::save() 我尝试使用以下每种方法删除字段收集项: // Method 1 entity_delete_multiple('field_collection_item', array($fc_id)); // Method 2 $field_collection_item = field_collection_item_load($fc_id); $field_collection_item->delete(); // Method 3 $field_collection_item = field_collection_item_load($fc_id); $field_collection_item->deleteRevision(); 这是我的完整代码: function import_user_field_collection(&$user, $old_user_id) { // I do a query to get the rows I want to …
9 7  entities 

1
为什么正文字段的语言不会保存为与节点相同的语言?
我遇到了一个问题,用户正在创建新节点并输入正文,但是将节点设置为该语言的“语言中立”。但是,当它保存节点时,正文字段的语言将设置为英语。为什么会这样呢?是什么原因造成的? 在此站点上,我们同时启用和配置了英语和法语。该站点是运行i18n的D7。 这类似于节点编辑页面中的“空正文”,不同之处在于,我想知道该字段将如何获得与节点最初不同的语言。

5
在保存节点上强制生成图像样式
我仍然在这里描述我的问题图像样式,在字段收集项中重复使用图像,但是我放弃了以获得解决方案。 我想到的一种解决方法是强制在nodesave上生成图像样式。有没有可能这样做?
9 7  media  entities 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.