There was a method with CCK in Drupal 6 to attach a CCK field in our custom form, like:
$field = content_fields('field_name'); // field_name is cck field
(text_field,text_Area,image_field anything.)
$form['#field_info'][$name] = $field;
$form += content_field_form($form, $form_state, $field);
How can I achieve the same functionality in Drupal 7? I had a form and I want to use the field that I created for a content type. I went through all the files of field.module but couldn’t find anything. There are functions in it like _attach_field, field_info_Field and field_info_instance, but they can’t be rendered as a form field.
I like your solution of adding the entire form and unsetting. I am attacking it from another angle– create a throw-away temporary form and copy in only the field(s) you wish to preserve. Here’s what I posted at http://api.drupal.org/api/drupal/modules%21field%21field.attach.inc/function/field_attach_form/7#comment-45908:
To add a single field off an arbitrary entity bundle (in this case, an autocomplete nodereference textfield) onto another form, create the form as a temporary form and formstate, and copy in to place that field definition. In my case, I’m working on a Commerce checkout form alter:
The advantage to either solution likely depends on the complexity of the “source” form (too complex means a lot of unsets with the form-insert method) and whether the source form will ever receive new fields over time (new fields will show up on your “destination” form in the form-insert method).
Thanks for sharing your solution!