10
Form API AJAX-commands

Михаил Крайнюк. Form api: ajax-commands

Embed Size (px)

DESCRIPTION

Выступления на DrupalCafe#7@Omsk от сибирского сообщества друпаллеров НП "ДрупалСиб". В данном докладе описываются методы использования AJAX-инструментов, встроенных в Drupal, при работе с формами. Form API позволяет не только строить формы, но и добавлять AJAX обработку для них, без написания JS-кода (используя только язык PHP). Получаемые обработчики надёжны, безопасны и просты в использовании. А результат, предоставляемый ими, поражает воображение. ----- Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib Партнер Группа компаний И20 i20.biz

Citation preview

Page 1: Михаил Крайнюк. Form api: ajax-commands

Form API

AJAX-commands

Page 2: Михаил Крайнюк. Form api: ajax-commands

OK

Form API

Page 3: Михаил Крайнюк. Form api: ajax-commands

OK

OK

Page 4: Михаил Крайнюк. Form api: ajax-commands

$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

Page 5: Михаил Крайнюк. Form api: ajax-commands

function name_of_function($form, $form_state) {

$html = ‘<div>’ . t(‘Hello!’) . ‘</div>’;

return $html;

}

1. HTML

Hello!

Page 6: Михаил Крайнюк. Form api: ajax-commands

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!

Готово!

Page 7: Михаил Крайнюк. Form api: ajax-commands

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

Page 8: Михаил Крайнюк. Form api: ajax-commands

Нужно больше?

Page 9: Михаил Крайнюк. Form api: ajax-commands

Собственные 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,

);

Page 10: Михаил Крайнюк. Form api: ajax-commands

Спасибо!

Крайнюк Михаил

[email protected]