I have a custom form which shows the title field and a view embedded into the form. Both form and the view are updated via Ajax. I am trying to add the body field, but it is not showing up.
This is my form
/**
* Provide a form.
*/
function MYMODULE_form($form, &$form_state) {
$form['wrapper'] = [
'#type' => 'container',
'#attributes' => [
'id' => 'mywrapper',
],
];
$form['wrapper']['node_form'] = [
'#type' => 'fieldset',
'#title' => t('Add article'),
];
$form['wrapper']['node_form']['node_title'] = [
'#type' => 'textfield',
'#title' => t('Article title'),
'#required' => TRUE,
];
$form['wrapper']['submit'] = [
'#type' => 'submit',
'#value' => t('Save'),
'#submit' => ['MYMODULE_form_submit'],
'#ajax' => [
'callback' => 'MYMODULE_MYCALLBACK',
'wrapper' => 'mywrapper',
],
];
$form['wrapper']['view_display'] = [
// view machine name && display/block name
'#markup' => views_embed_view('nodes', 'block'),
];
return $form;
}
/**
* Do some validation.
*/
function MYMODULE_form_validate($form, &$form_state) {
// Better do some validation.
// Here or via #element_validate.
// @see https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7.x#element_validate
}
/**
* Form submit. Node creation.
*/
function MYMODULE_form_submit($form, &$form_state) {
global $user;
$node = new stdClass();
$node->type = 'article';
$node->title = $form_state['values']['node_title'];
$node->language = LANGUAGE_NONE;
$node->uid = $user->uid;
node_object_prepare($node);
node_save($node);
// Empty out title field on rebuild.
$form_state['input']['node_title'] = '';
// Rebuild form.
$form_state['rebuild'] = TRUE;
}
/**
* Ajax callback to return the whole wrapper.
*/
function MYMODULE_MYCALLBACK($form, &$form_state) {
return $form['wrapper'];
}