In my custom form I have a file upload, which follows the array structure of file_element_info()
in file.module in core. This is consistent with examples in examples module and date module has _date_api_element_info()
.
But looking at geofield or at openlayers and other modules I can not see what array values are possible/required.
As a general rule how do I find out how to add a field of a specific type to a custom form?
Edit #1: Just read Where can I find complete documentation of hook_field_info? and everyone is being really helpful about Field API, but it is a steep learning curve. A specific example would really help (an not one of the simple core field types).
Edit #2:
So on my particular example in geofield.module
I got (got the same using dpm(field_info_field_types('geofield'));
):
function geofield_field_info() {
return array(
'geofield' => array(
'label' => 'Geofield',
'description' => t('This field stores geo information.'),
'default_widget' => 'geofield_wkt',
'default_formatter' => 'geofield_wkt',
'instance_settings' => array(
'local_solr' => array(
'enabled' => FALSE,
'lat_field' => 'lat',
'lng_field' => 'lng',
),
),
'property_type' => 'geofield',
'property_callbacks' => array('geofield_property_info_callback'),
),
);
}
But how does that translate to a form field array?
$form['location'] = array(
'#title' => t('Location'),
'#type' => 'geofield',
'#required' => TRUE,
);
Or do I have the wrong end of the stick here?