it-swarm-eu.dev

Jak změnit prvek formuláře tak, aby byl zahrnut uvnitř sady polí

Používám field_attach_form () k zobrazení formuláře entity. Když volám tuto funkci, automaticky vytvoří formulář, který neobsahuje žádné sady polí, pouze neseskupené elementy formuláře.

Před zobrazením formuláře bych chtěl vzít některé prvky formuláře a seskupit je do sad polí. Pokud mám něco takového:

$form array:
    form element 1
        attributes
    form element 2
        attributes
    fieldset1
        attributes
    fieldset2
        attributes

Existuje atribut elementu formuláře nebo speciální funkce, které mi umožní říct Drupal automaticky umístit "element 1" do "fieldset1"?

Lze to alternativně provést na úrovni jádra/entity, ne vlastního modulu, takže když se nazývá field_attach_form (), sady polí se automaticky vytvoří?

3
Carlos Muñiz

Můžeš použít $form['#pre_render'][] = 'yourfunction'; a přesuňte pole do sady polí v této funkci.

2
Daniel Wehner

Tento kód vám může pomoci.

   $form['date_fieldset'] = array(
        '#type' => 'fieldset',
        '#title' => t('Select Start and End dates'),
        '#collapsible' => TRUE,
//        '#tree' => TRUE,
    );

    $form['date_fieldset']['date_inactive_start'] = array(
        '#title' => t('Start date'),
        '#type' => 'date_popup', // Provided by the date_popup module
        '#date_format' => 'd/m/Y',
        '#date_year_range' => '0:+1',
        '#required' => TRUE,
        '#size' => 8,
        '#default_value' => date('Y-m-d', time()), // Default value must be in 'Y-m-d' format.
    );

    $form['date_fieldset']['date_inactive_end'] = array(
        '#title' => t('End date'),
        '#type' => 'date_popup', // Provided by the date_popup module
        '#date_format' => 'd/m/Y',
        '#date_year_range' => '0:+2',
        '#required' => TRUE,
        '#size' => 8,
        '#default_value' => date('Y-m-d', time()), // Default value must be in 'Y-m-d' format.
    );
4
Himanshu Pathak

Pokud někdo hledá úplný příklad, jak to udělat:

// hook_form_BASE_FORM_ID_alter to target only article node edit forms
function my_module_form_article_node_form_alter(&$form, &$form_state, $form_id) {

    $form['#pre_render'][] = 'add_to_fieldset';

}

function add_to_fieldset($form) {
    // Adding element to the publishing options fieldset on node form

    $form['options']['element_to_add'] = $form['element_to_add'];
    unset($form['element_to_add']);

    return $form;

}
0
joedivic