Upload
drupalsib
View
140
Download
4
Embed Size (px)
DESCRIPTION
Выступления на DrupalCafe#7@Omsk от сибирского сообщества друпаллеров НП "ДрупалСиб". В данном докладе описываются методы использования AJAX-инструментов, встроенных в Drupal, при работе с формами. Form API позволяет не только строить формы, но и добавлять AJAX обработку для них, без написания JS-кода (используя только язык PHP). Получаемые обработчики надёжны, безопасны и просты в использовании. А результат, предоставляемый ими, поражает воображение. ----- Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib Партнер Группа компаний И20 i20.biz
Citation preview
Form API
AJAX-commands
OK
Form API
OK
OK
$form['offer_type'] = array(
'#type' => ‘select',
'#title' => t('Select please'),
'#options' => array( ... ),
'#ajax' => array(
'callback' => 'name_of_function',
'wrapper' => 'html-id-of-wrapper',
),
);
- Toyota
- Renault
- Porsche
- Выберите -Поздравляем!
Вам в подарок:
Porsche 911 Carrera
function name_of_function($form, $form_state) {
$html = ‘<div>’ . t(‘Hello!’) . ‘</div>’;
return $html;
}
1. HTML
Hello!
function name_of_function($form, $form_state) {
$cmd = array();
$cmd[] = ajax_command_replace(NULL, $output);
$cmd[] = ajax_command_prepend(NULL, theme('status_messages'));
return array(
'#type' => 'ajax',
'#commands' => $cmd,
);
}
2. Commands
Hello!
Готово!
AJAX-commandsajax_command_before
ajax_command_changed
ajax_command_css
ajax_command_dataajax_command_html
ajax_command_insert
ajax_command_invoke
ajax_command_prepend
ajax_command_remove
ajax_command_replace
ajax_command_restripe
ajax_command_settings
ajax_command_after
ajax_command_alert
ajax_command_append
Нужно больше?
Собственные AJAX-commands
(function($) {
Drupal.ajax.prototype.commands.my_func = function(ajax, response, status) {
document.title = response.title;
}
} (jQuery));
$cmd = array();
$cmd[] = array(‘command‘ => ‘my_func', ‘title‘ => $page_title . ‘!!!‘);
$cmd[] = ajax_command_replace(NULL, $output);
return array(
'#type' => 'ajax',
'#commands' => $cmd,
);