function asaf_prepare_form in Asaf (ajax submit for any form) 8
Same name and namespace in other branches
- 7 asaf.module \asaf_prepare_form()
Attach ajax handlers to the specified buttons.
Parameters
$form: An associative array containing the structure of the form.
$form_state: A keyed array containing the current state of the form. Asaf processed flag asaf options will save in $form_state.
$buttons: (optional) Array containing information about buttons, which should be handled. Empty array means all buttons should be handled. Not empty associative array can have the following keys:
- included: list of buttons which should be handled;
$buttons = array(
'included' => array(
'actions][submit' => array(...),
'actions][preview' => '',
);
);
If value of buttons item is array, it will be added to the button form element.
- excluded: list of buttons which should not be handled.
Inclided section have prioriry over excluded section.
$options: (optional) An associative array with asaf options. Can have the folowing keys:
- needed_files: Array of files which should be loaded for the correct form handling. File item can be module name instead of correct filename. In this case all *.inc files from this module folder will be loaded automatically.
$options = array(
'needed_files' => array(
'modules/user/user.pages.inc', // this file will be loaded
'webform' // all inc files from webform module folder will be loaded
);
);
5 calls to asaf_prepare_form()
- asaf_example_api_areas in modules/
asaf_example/ asaf_example.api.areas.inc - asaf_example_api_depended_elements in modules/
asaf_example/ asaf_example.api.depended_elements.inc - asaf_example_api_needed_files in modules/
asaf_example/ asaf_example.api.needed_files.inc - asaf_example_api_simplest in modules/
asaf_example/ asaf_example.api.simplest.inc - asaf_form_alter in ./
asaf.module
File
- ./
asaf.module, line 143 - Main module file.
Code
function asaf_prepare_form(&$form, &$form_state, array $buttons = array(), array $options = array()) {
$options += asaf_default_options();
$form_state += array(
'asaf' => array(),
);
$form_state['asaf']['form_path'] = isset($form_state['values']['asaf_form_path']) ? $form_state['values']['asaf_form_path'] : request_path();
$form_state['asaf']['buttons'] = $buttons;
$form_state['asaf']['options'] = $options;
// Default renderable area
$form['#asaf_area'] = 'form';
asaf_mark_buttons($form, '', $form_state);
asaf_handle_buttons($form, '', $form_state);
asaf_handle_areas($form, '', $form_state);
// Need for fast way decoding asaf forms instead of a slow call _asaf_get_form_details_from_stacktrace()
$form['asaf_form'] = array(
'#type' => 'hidden',
);
if (isset($options['needed_files']) && !empty($options['needed_files'])) {
asaf_register_needed_files($form_state, $options['needed_files']);
}
if ($options[ASAF_SETTINGS_PAGE_CACHE]) {
$form['asaf_form_path'] = array(
'#type' => 'hidden',
'#value' => $form_state['asaf']['form_path'],
);
$form['asaf_id_prefix'] = array(
'#type' => 'hidden',
'#value' => $form_state['asaf']['id_prefix'],
);
$form['#process'][] = 'asaf_form_pagecache_process';
}
$form['#attached']['js'][] = array(
'type' => 'setting',
'data' => array(
'asaf' => array(
'submitByEnter' => \Drupal::config('asaf_settings.config')
->get('asaf_form_submit_by_enter'),
),
),
);
}