Questions tagged «entities»

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


4
如何获取原始URL作为“视图”中的字段?
在视图中,我需要将作为href值提供的原始url返回给title字段(作为链接时)或Content:链接值。我本来以为我可以选择Content:link并以重写的方式剥离HTML,但是没有。 我需要完整的URL,以便可以在字段重写中将其作为参数传递。关于如何获得此的想法?
13 7  views  entities 

5
以编程方式从一个实体的一个字段中删除一个条目
以编程方式从一个特定实体中删除多条目字段的一个特定字段条目的正确方法是什么?(这是特定的字段和特定的实体,不是字段类型或实例和实体类型) 这是我研究过的一些不起作用的可能性: 使用加载实体entity_load(),将字段条目设置为= null或= array(),然后使用保存field_attach_update()。这是我找到的最接近的,但它在数据库中留下了一个僵尸null字段条目,该条目在表单上显示为空白行,直到保存表单并hook_field_is_empty()可以将其踢入为止(hook_field_is_empty()配置为= null或= array()将进行标记为空)。 用加载实体entity_load(),通过键取消设置字段条目,然后用保存field_attach_update()。这似乎无济于事-似乎Drupal将该条目解释为不修改该条目的标志。(奇怪的是,有时我在尝试这种方法时有时也会得到最大查询时间过期超时) field_attach_delete() -这太直率了:它会杀死实体的所有字段 field_purge_data() -更好,但仍然太钝:它会杀死该字段的所有条目,而不是特定条目 因此,为澄清起见,我有代码来查找(并加载)一个实体,该实体的字段具有多个条目,并在该字段上找到需要删除的特定条目。我想完全删除该条目,而无需触摸实体上的任何其他条目或任何其他字段。
13 7  entities 

3
截断字段修订表是否安全?
我注意到D7为每个字段创建一个field_revision表,并从其字段表副本中复制内容,即使已关闭修订。 我有一个很大的文本表,它占用了大量空间(几个GB)。 截断修订表是否安全? PS:同时,我也将此报告为错误。
13 7  entities  database  nodes 

1
字段类型:文本与长文本
Drupal 7中的“文本”和“长文本”有什么区别? 如果仅是数据库字符长度,在可能输入值的域不明确的情况下,谨慎并默认使用长文本更好吗?
13 7  entities 

4
以编程方式更新字段,hook_node_update
当前,每次创建或更新节点时都尝试更新字段。但是,该值未在节点内填充,我是否可以使用此特定的钩子访问节点对象?我可能会缺少什么? function vbtoken_node_update($node) { entity_get_controller('node')->resetCache(array($node->nid)); $types = node_type_get_types(); //What are the current Node Content Types? $yes = ($types['volunteer_project']->type); if($node->type === $yes){ $hash = md5($node->title . $node->nid . $node->nid); $hashed = substr($hash, 0, 6); $node = node_load($node->nid); $node->tcode[$node->language][0]['value'] = $hashed; node_save($node); watchdog('vbtoken', 'Added a new Token code to %nid', array('%nid' => …
13 7  entities 

3
如何获取段落字段值?
我想在drupal中创建产品列表,然后通过网络服务发送。为此,我为每个产品创建了一个带有段落的实体类型。如何加载段落并访问其字段?到目前为止,我只看到产品的target_id和target_revision_id。谢谢! $nodestorage = \Drupal::entityManager()->getStorage('node'); $productslist = $nodestorage->loadUnchanged(9)->toArray(); foreach($productslist['field_products'] as $prod) { debug($prod); } 结果: Array ( [target_id] => 1 [target_revision_id] => 3 )

4
为什么不能将另一个允许的文件扩展名添加到Drupal 7图像字段?
我为通过的图片上传添加了SVG文件扩展名,admin/structure/types/manage/image/fields/gallery_image如下所示: 但是当我上传图片时,仍然不允许上传SVG。 我肯定在管理页面上按了“保存”,然后清除了缓存,当我检查field_config_instance表时,甚至在数据库中看到了所需的设置。必须有其他未更新的表或缓存。任何想法?

7
在保存节点之前,通常以自定义形式检测更改的字段
我正在使用field_attach_form()将内容类型中的某些字段添加到自定义表单中。提交表单后,我正在通过#validate和#submit回调调用field_attach_form_validate()和field_attach_submit()处理这些字段。 在这一点上,我想将提交后的准备好的节点对象与原始节点进行比较,并且如果任何字段已更改,则仅对node_save()进行比较。因此,我首先使用加载原始节点entity_load_unchanged()。 不幸的是,即使未对字段进行任何更改,原始节点对象中的字段数组也不与准备保存的节点对象中的字段数组匹配,因此,简单的“ $ old_field == $ new_field比较是不可能的。例如,原始文本中会出现一个简单的文本字段: $old_node->field_text['und'][0] = array( 'value' => 'Test', 'format' => NULL, 'safe_value' => 'Test', ); 而在准备好的节点中,它看起来像这样。 $node->field_text['und'][0] = array( 'value' => 'Test', ); 您可能会想只比较“值”键,但随后会遇到由没有“值”键的其他元素组成的字段。例如,让我们看一个地址字段,其中没有“值”键,在旧节点和准备好的节点中都没有对应的键。 旧节点 $old_node->field_address['und'][0] = array( 'country' => 'GB', 'administrative_area' => 'Test', 'sub_administrative_area' => NULL, 'locality' => 'Test', 'dependent_locality' => NULL, 'postal_code' …
12 7  entities 

3
使用entity_metadata_wrapper时访问未知字段类型的值
我一直在研究使用实体元数据包装程序类(由Drupal 7中的实体模块定义)来访问字段值,因为这样做似乎是一种干净的方法。 但是,有几件事情使这有些尴尬。假设我有一个内容类型的包装器,该包装器定义了一个field_something这样命名的字段: $wrapper = entity_metadata_wrapper('node', node_load($nid)); $value = $wrapper->field_something->value(); 我遇到的第一个问题是我无法事先知道我得到的是实际值(字符串,实体等),另一个元数据结构包装器(当字段具有多个值时)还是数组(当字段具有多个属性)。 我找到了一种使用该info()方法回答这些问题的方法: $info = $wrapper->field_something->info(); $is_multi_value = (strpos($info['type'], 'list<') === 0); $has_multiple_properties = isset($info['property info']]); 但是,这几乎不可行。每当我想使用字段而不事先知道其定义时,都必须考虑几种情况。这使我的代码很繁重。 为了解决这个问题,我写了一些代码: 确保我们总是返回一个数组,即使它是单个值字段也是如此; 当有多个属性时,返回第一列的值。 要点1.这里始终有效,除非调用者想知道这是否是单个值字段。Point 2在某些情况下(并非全部)有效,但适用时很方便。 这是代码: function entity_metadata_simple_values($field) { $fields = array(); $values = array(); $info = $field->info(); if (strpos($info['type'], 'list<') === 0) { …
12 entities 

4
什么时候使用列表(文本)或分类法?
这可能是一个愚蠢的问题,但是我很好奇在分类术语参考字段上使用列表(文本)多重选择字段的好处。它们似乎都具有大致相同的功能,可以提供预定的多项选择选项,但是分类法具有的额外好处是,您可以在将内容写入数据库后添加术语。 那么,有没有一个好的指南可以使一个人使用另一个?(特别是list(text)比分类术语引用更有意义吗?)。

2
获取现场汇总信息的最可持续方法是什么?
EntityFieldQuery不可用于对字段数据运行聚合函数(SUM,AVG等),因为它与SQL无关。也就是说,合法地需要不时地运行此类操作。根据具有EntityFieldQuery尤其是EntityFieldQuery的SQL函数以及如何使用聚合函数SUM,ARG和MAX,需要使用SQL查询,并且这种方法最适合我的用例。昨天我在与@chx交谈时,他建议使用几个内部函数来查找字段名称和列名称。我只是想知道这是否可持续,是否适合在我可能发布给其他人的代码库中进行。 如果这是最好的方法,那就是最好的方法。我绝对不敢做,因为它感觉很乱。
12 7  entities  database 


3
“实体API”在Drupal API中添加了什么?为什么模块依赖于它?
所述实体API模块延伸在Drupal中定义的实体的API。在哪种情况下,模块应使用该模块提供的API?如果实现新实体的模块依赖于Entity API模块,是否更易于编写? 通过“更容易被写成”我的意思是使用模块实体API将需要更少的代码比不使用的模块被写入实体API。 我阅读了项目页面,但是我仍然不完全明白为什么创建依赖于Entity API模块的模块,而不是仅依赖于Drupal核心代码的模块的原因。我知道,扩展规则并实现实体的模块应使用Entity API模块;在第一种情况下,原因还在于“ 规则”模块依赖于Entity API模块。
12 entities 

5
如何从节点对象获取节点类型标签?
我正在尝试从Drupal 8中的节点对象获取节点的捆绑标签(节点类型标签)。 这行得通,但似乎long之以鼻: $node_type = \Drupal::entityManager()->getStorage('node_type')->load($node->getType())->get('name'); 是否有另一种方式来获得捆绑标签,可能在一个不太复杂的方法吗?
12 8  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.