J'ai un module dans lequel j'ai défini le type de contenu. Supposons que je n'ai que des champs title
et body
.Meilleure façon d'utiliser node_form
Lorsque la forme de noeud rend la norme title (textfield)
et body (textarea)
. Je veux envelopper ces deux champs dans fieldset
.
Voici comment j'y arrive, mais je ne pense pas que ce soit la meilleure solution.
/**
* Implements hook_form().
*/
function hook_form($node, $form_state) {
return node_content_form($node, $form_state);
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function hook_form_node_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'content_type_name_node_form') {
$form['info'] = array(
'#type' => 'fieldset',
'#title' => t('Describe your content')
);
$form['info']['title'] = $form['title'];
unset($form['title']);
$form['info']['body'] = $form['body'];
unset($form['body']);
}
}
Des suggestions pour l'améliorer?
MISE À JOUR
Une autre variante que je pense. C'est à peu près la même chose, juste un peu améliorée.
/**
* Implements hook_form_FORM_ID_alter().
*/
function hook_form_node_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'content_type_name_node_form') {
$groups = array(
'info' => array(
'title' => t('Describe your content'),
'fields' => array('title', 'body')
)
);
foreach ($groups as $key => $group) {
$form[$key] = array(
'#type' => 'fieldset',
'#title' => $group['title']
);
foreach ($group['fields'] as $field) {
$form[$key][$field] = $form[$field];
unset($form[$field]);
}
}
}
}
Fieldgroup est génial. Je suis d'accord que ce serait exagéré ici, mais cela ferait certainement l'affaire. –
Vraiment être d'accord. Une fois que vous obtenez de grands types de contenu, être capable de grouper ces champs en onglets verticaux et groupes d'accordéon est ftw. – roberthernandez