【问题标题】:How to add user-fields programmatically in Drupal 7如何在 Drupal 7 中以编程方式添加用户字段
【发布时间】:2011-08-08 11:47:40
【问题描述】:

我正在尝试为从 Drupal 6 迁移的模块创建 .install。它需要两个“配置文件字段”,在 drupal 6 中,它会自动检查并创建。

要将其升级到 drupal 7,我正在尝试使用字段来执行此操作!够简单吧?

到现在为止

if(!field_info_field('user_fullname')) {
    $field = array(
        'field_name' => 'user_fullname',
        'type' => 'text',
        'settings' => array(
            'required' => TRUE,
        ),
    );
    field_create_field($field);
    $instance = array(
        'field_name' => 'user_fullname',
        'entity_type' => 'user',
        'label' => 'The user\'s full name',
        'bundle' => 'additional_info',
        'required' => true,
        'widget' => array(
            'type'=>'options_select',
        )
    );
    field_create_instance($instance);
}

哪个确实创建了该字段,但在用户的个人资料中不可见?
我需要额外的东西吗?如果有,是什么?

非常感谢。

已解决:这是由于捆绑包(不完全确定捆绑包到底是什么),我将捆绑包更改为“用户”并且它出现了!

【问题讨论】:

  • 也许您应该尝试检查管理显示?
  • 也没有出现,我知道该字段存在的唯一原因是查看 phpmyadmin!
  • 啊哈!这是由于捆绑包(不完全确定捆绑包到底是什么),我将捆绑包更改为“用户”并且它出现了!呵呵,还没有足够的声望来回答我自己的问题。嗯嗯!

标签: drupal drupal-7


【解决方案1】:

bundle 与内容类型几乎相同。但由于在 D7 中用户也是实体,但他们不是内容,使用术语“内容类型”没有意义。参考:Barry Jaspan 的 DrupalCon Paris 2009 会议:面向模块开发人员的 Field API 简介。

Intro to the Field API for Module Developers

【讨论】:

    【解决方案2】:

    这是由于捆绑包(不完全确定捆绑包到底是什么),我将捆绑包更改为“用户”,它出现了!

    【讨论】:

      【解决方案3】:

      据我所知,在 D7 中,bundle 类似于实体模型,它可以包含字段。默认的 drupal 包是节点、用户和分类,但新的 API 也为开发人员提供了创建自定义包的功能。每个字段都需要属于一个包。

      【讨论】:

        【解决方案4】:

        Drupal 中的包是实体的子集。在这种情况下,实体类型是用户,并且只有一种用户类型,因此捆绑包是用户。

        在分类学中:分类是实体,词汇是捆绑。

        在节点中:节点是实体,内容类型是捆绑包。

        没有字段可以附加到实体,属性附加到实体(已发布、粘性等)。字段附加到 Bundles。

        我没有足够的代表发表评论,所以这是我对那些通过谷歌找到的人的回答。和我一样。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多