Přidávání polí do formuláře pomocí jQuery

Dobrý den,

vytvořil jsem si nový modul a vněm formulář. Jsou tam vygenerovány nějaké prvky (textarea, input…). Uživatel pomocí jQuery může přidat prvky nové.

Po odeslání formuláře však hodnoty z nových polí nejsou dostupné ve funkci submit(). Nejsou obsaženy v proměnné $form nebo $form_state. Musím nějak drupalu říct, že jsem přidal nová pole, jak?

<code>

function my_module_form_submit($form, &$form_state) {

print_r($form);

exit();

</code>

Našel jsem něco podobnéhé v příkladech  http://drupal.org/project/examples, zejména pak ajax_example, Add-more button. Jestli jsem to dobře pochopil, tak se odešle formulář pomocí ajaxu na server, tam se rebuildne a celý vyrendrovaný se pošle zpět. Můj formulář je trochu objemnější a přijde mi celkem zbytečné jej celý odesílat sem a tam, jen když chci přidat nový texfield.

Je možné objejít celé odesílání sem a tam?

Předem děkuji za odpověď.

Profile picture for user Jan Polzer

Dobrý den. Obávám se, že bez rebuildu nebude Drupal na dodatečně přidaná políčka ve formuláři slyšet.

návštěvník

Dobrý den,

 zkouším nyní udělat rebuild formuláře. Rár bych navíšil počet polí ve formuláři zavoláním adresy admin/structure/set_menu/rebuild/"form_build_id". Zatím to vypadá, že se form vůbec nezmění.

 

<code>

 

/**

 * Implements hook_menu().

 */

function set_menu_menu() {

  $items['admin/structure/set_menu/rebuild/%'] = array(

    'title' => 'Rebuilt',

    'page callback' => 'set_menu_ajax_rebuild',

    'page arguments' => array(4),

    'access callback' => TRUE,

  );

  return $items;

}

 

function set_menu_ajax_rebuild($form_build_id) {

  $form_state = form_state_defaults();

  $form = form_get_cache($form_build_id, $form_state);

 

    // Since some of the submit handlers are run, redirects need to be disabled.

  $form_state['no_redirect'] = TRUE;

 

  // When a form is rebuilt after Ajax processing, its #build_id and #action

  // should not change.

  // @see drupal_rebuild_form()

  $form_state['rebuild_info']['copy']['#build_id'] = TRUE;

  $form_state['rebuild_info']['copy']['#action'] = TRUE;

 

 

  $form_state['set_menu']['count']++;

  $form_state['rebuild'] = TRUE;

 

  drupal_process_form($form['#form_id'], $form, $form_state);

}

 

 

function set_menu_form($form, &$form_state) {

 // generuje pocet poli na zaklade hodnoty v $form_state['set_menu']['count'];

}

 

/**

 * Form submission handler for set_menu_form().

 */

function set_menu_form_submit($form, &$form_state) {

  print_r($form_state); // $form_state['set_menu']['count'] nebyl navysen po odeslani 

  exit();

}

 

 

 

</code>

 

Promenna $form_state['set_menu']['count'] neni po zavolani admin/structure/set_menu/rebuild/"form_build_id" a odeslani formulare navysena. Mohu se timto postupem dostat k tomu, abych navíšil proměnnou $form_state['set_menu']['count']  a rebuildnul formulář?

Děkuji, Martin.

 

návštěvník

Můj problém jsem sepsal ještě sem http://drupal.org/node/1559306 Pokud by někdo přišel na řešení, rád zaplatím předem smluvenou částku. 

 

Děkuji, Martin.

Odpovědět

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Poslední komentáře
Nové diskuze
Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru