Szeretnénk saját Drupal 6 modul fejlesztésekor ha a formunkon működne az autosubmit, azaz például egy legördülő lista elemének kiválasztásakor automatikusan elmentődne a form anélkül, hogy külön kelljen a "Mentés" gombra kattintani.
Ehhez a JQuery modul lehetőségét használjuk ki, így az telepítve kell legyen.
A példában a modulunk neve: 'mymodule', a legördülő lista elem neve pedig: 'selector'
Két fájl fontos: a modult leíró mymodule.module PHP állomány és a java scriptet tartalmazó mymodule.js fájl. A példában mindkettő a modul mappájában található: sites/all/modules/mymodule
A mymodule.js fájl:
Az autosubmit-tal működtetni kívánt elem azonosítóját (ID) ha máshogy nem megy ki lehet olvasni a form futtatásakor az oldal HTML forrásából. Ha minden igaz, akkor ez - mint alább is látható - nem más mint az elem neve, jelen esetben selector, a #edit- előtaggal, azaz #edit-selector
if (Drupal.jsEnabled) { $(document).ready(function() { $("#edit-selector").change(function() { $("form").submit(); }); }); };
A mymodule.module fájl:
<?php /** ----------------------------------------------------------------------- * Implementation of hook_menu **/ function mymodule_menu() { $items = array(); // My Form $items['mymodule/myform'] = array( 'title' => 'My Form', 'page callback' => 'mymodule_myform', 'access arguments' => array('view myform'), 'type' => MENU_NORMAL_ITEM, ); return $items; } // function mymodule_menu() /** ----------------------------------------------------------------------- * My Form - a formot megvalósító függvény **/ function mymodule_myform() { // Betöltjük a Java Script állományt drupal_add_js(drupal_get_path('module', 'mymodule'). '/mymodule.js', 'module', 'footer'); // Betöltjük a form elemeket $ret = drupal_get_form('mymodule_formitems'); return $ret; } // function _mymodule_myform() /** ----------------------------------------------------------------------- ** A form elemeit leíró függvény **/ function mymodule_formitems() { // Létrehozunk egy legördülő listát 'selector' névvel $options = array("1"=>"Egy", "2"=>"Kettő", "3"=>"Három"); $form['selector'] = array( '#type' => 'select', '#title' => t('Selector'), '#default_value' => variable_get('selector', 2), '#options' => $options, '#description' => t("Ez a 'Selector'"), ); return $form; } // function mymodule_formitems() /** ----------------------------------------------------------------------- ** A form mentésekor (submit) meghívásra kerülő függvény - hook_submit **/ function mymodule_formitems_submit($form, &$form_state) { variable_set('selector', $form_state['values']['selector']); drupal_set_message("A 'Selector' értékét elmentettük: ".$form_state['values']['selector']); } // function mymodule_formitems_submit()