在 Drupal 7 中定义并使用其他节点类型的字段作为我的表单元素类型

Define and use a field of other node type as my form element type in Drupal 7

我正在开发 Drupal 7 的模块。我定义了一个名为 'Booth' 的节点类型。现在在我的模块中,我创建了一个表单,其中包含一些字段,例如名称、phone、地址等。其中一个字段是 Booth,它是一个 Select 类型的元素。我想要将展位标题(我在 "Add Content > Booth" 中添加的)作为我的 Select 元素选项。我怎样才能做到这一点?如何使用我的展位内容类型的标题字段填充选项数组? [请看下图]

The first field must be filled with title of booth titles

$form['exbooth'] = array(
    '#type' => 'select',
    '#title' => t('Exhibition Booth'),
    '#options' => array(), // I want to fill this array with title fields of booth content type
    '#required' => TRUE,
);
$form['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Name'),
    '#required' => TRUE,
);
$form['lastname'] = array(
    '#type' => 'textfield',
    '#title' => t('Last Name'),
    '#required' => TRUE,

在 drupal 中进行了一些挖掘 API 之后,我终于找到了解决方案。

我使用 entity_load() 函数检索 'booth' 内容类型的所有节点,然后我将结果的标题放入一个数组中并为 Select 选项设置该数组:

$entities = entity_load('node');
$booths = array();
foreach($entities as $entity) {
    if($entity->type == 'booth') {
        $i = 1;
        $booths[$i] = $entity->title;
    }
}
....
//inputs
$form['exbooth'] = array(
    '#type' => 'select',
    '#title' => t('Exhibition Booth'),
    '#options' => $booths, // I set my array of booth nodes here
    '#required' => TRUE,
);