在 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,
);
我正在开发 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,
);