Drupal 7 EntityAlFormedException:类型为student的实体缺少bundle属性。在实体_extract_id()中

Drupal 7 EntityAlFormedException:类型为student的实体缺少bundle属性。在实体_extract_id()中,drupal-7,drupal-modules,Drupal 7,Drupal Modules,我创建了一个名为“student”的简单模块,这个模块生成的新实体是“student” 这是我的密码 但当我添加新学生时,会收到这样的错误消息: EntityAlFormedException:类型为student的实体缺少bundle属性。在实体_extract_ids()中(C:\AppServ\www\drupal-7.12\includes\common.inc的第7501行) 我看了我所有的代码但找不到什么, 非常感谢 这个问题-“”-可能是导致您出现问题的原因。要确认这一点,请按照

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

但当我添加新学生时,会收到这样的错误消息:


EntityAlFormedException:类型为student的实体缺少bundle属性。在实体_extract_ids()中(C:\AppServ\www\drupal-7.12\includes\common.inc的第7501行)

我看了我所有的代码但找不到什么, 非常感谢

这个问题-“”-可能是导致您出现问题的原因。要确认这一点,请按照中的步骤进行快速检查,如下所示:

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


在我的例子中,问题是当我试图用另一种nid保存一种类型的节点时。
我只需要检查nid类型是否与正在保存/更新的节点的实际类型相同。

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

Drupal core
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代码)

  • 检查在实体信息数组中定义的数组的
    实体键
    部分中的
    bundle
    的值,方法是:

    drush eval 'print_r(entity_get_info("student"));'
    
  • 如果它是
    类型
    ,则表示您试图保存的实体缺少
    类型
    属性

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

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

    drush eval '$entity = entity_load("student", array(1)); entity_get_controller("student")->save(reset($entity))'
    
    其中student是您的
    实体类型
    1
    是您的实体id

    如果仍然不起作用,请清除缓存(
    entity\u info\u cache\u clear()
    )或临时编辑您的
    common.inc
    并转储(例如
    var\u dump($entity);
    您的
    $entity
    就在throw的前一行,检查传入函数的内容,并进一步调查您的bundle
    type
    丢失的原因


    有关更多可能性和详细信息,请检查:at DO

    添加

    var\u dump(debug\u backtrace());

    行,然后您将获得更多错误信息。这可能会帮助您解决此问题


    检查表映射id,其中一些缺少…

    EntityMalformedException:文件类型的实体缺少bundle属性。在实体\u extract\u id()中

    在我们的情况下,用户帐户本身就是问题所在


    由于某种原因,用户访问权限在添加了所有好的内容后就消失了!

    对我来说
    drush eval'print\u r(entity\u get\u info(“student”);”
    不起作用。我不得不使用
    drush eval“print\u r(entity\u get\u info(“student”);“
    这太完美了,感谢您随时指出这个问题。