3

我创建了一个名为“student”的简单模块,这个模块生成的新实体是“student”,这是我的代码 在这里下载

但是当我添加 new student 时,我收到这样的错误消息:

EntityMalformedException:学生类型的实体缺少捆绑属性。在 entity_extract_ids() 中(C:\AppServ\www\drupal-7.12\includes\common.inc 的第 7501 行)。

我浏览了我所有的代码,但我找不到一些东西,非常感谢!

4

6 回答 6

5

这个问题 - ' Missing bundle property on entity of type file error ' - 可能是导致您的问题的原因。快速检查以确认这一点是按照评论 #5中采取的步骤进行的,如下所示:

我有同样的问题,这显然是由实体对象中缺少实体类型属性引起的。我查看了我的数据库,发现表“file_managed”有一个字段“type”。我填写了相关实体对象的类型,它可以工作。显然这不是一个真正的解决方案(手动更新数据库),因为存在数百个条目......

于 2012-10-24T18:10:27.593 回答
3

Drupal 核心common.inc文件抛出错误,条件如下:

  if (!empty($info['entity keys']['bundle'])) {
    // Explicitly fail for malformed entities missing the bundle property.
    if (!isset($entity->{$info['entity keys']['bundle']}) || $entity->{$info['entity keys']['bundle']} === '') {
      throw new EntityMalformedException(t('Missing bundle property on entity of type @entity_type.', array('@entity_type' => $entity_type)));
    }
    $bundle = $entity->{$info['entity keys']['bundle']};
  }

因此,如果您的 bundle 属性在保存时格式错误,则它会显式失败,因为它无法识别那是什么类型(bundle)。

这可能失败的原因有很多,因此您必须先对其进行分析。

(如果您没有 drush,如果启用了 Devel 模块,您可以在 /devel/php 中运行 PHP 代码)。

  1. 通过以下方式检查实体信息数组中定义的数组部分的值是什么bundleentity keys

    drush eval 'print_r(entity_get_info("student"));'
    
  2. 如果是type,那么这意味着您要保存的实体,它缺少type属性。

常见的错误通常是通过entity_load()加载实体并尝试重新保存它,但请记住,返回值是由其 id 索引的实体对象数组。

因此,验证您的实体重新保存是否正常工作的简单测试是:

drush eval '$entity = entity_load("student", array(1)); entity_get_controller("student")->save(reset($entity))'

其中 student 是您的entity_type1是您的实体 ID。

entity_info_cache_clear()如果还是不行,清除缓存common.incvar_dump($entity);$entitytype


有关更多可能性和详细信息,请查看:如何调试 EntityMalformedException?在做

于 2014-08-01T15:20:35.610 回答
1

In my case, the problem was when I tried to save a node of one type with nid of another. I just needed to check if the nid type was actuallly what the type of the node being saved/updated.

于 2013-07-13T10:44:33.113 回答
0

我对模块用户导入有同样的问题。我通过用户导入模块的这个补丁解决了它。我希望这个解决方案可以帮助你。

于 2013-08-13T15:24:05.540 回答
0

EntityMalformedException:文件类型的实体缺少捆绑属性。在 entity_extract_ids()

对于我们的情况,用户帐户本身就是问题!

出于某种原因,用户访问权限一旦添加就消失了!

于 2018-07-15T22:18:59.420 回答
0

添加

var_dump(debug_backtrace());

错误之前的行,那么您将获得更多错误信息。这可能会帮助您解决这个问题。

并检查表映射ID,其中一些缺失...

于 2016-02-19T16:08:24.353 回答