Вывожу форму корзины блоком. Требуется без перезагрузки корзины при смене quantity апдейтить корзину. Решил допилить dc_cart_ajax. Навесил аякс на quantity field
<?phpforeach (element_children($form['edit_quantity']) as $k) {
$form['edit_quantity'][$k]['#ajax'] = $ajax;
}?>
Стандартный калбек этого модуля:
<?phpfunction dc_cart_ajax_form_views_form_commerce_cart_form_ajax_submit(&$form, &$form_state) {
$order = commerce_cart_order_load($GLOBALS['user']->uid);
$is_empty = empty($order->commerce_line_items);
$output = '';
if ($is_empty) {
$output = menu_execute_active_handler('cart', FALSE);
}
$commands[] = array(
'command' => 'dc_cart_ajax',
'output' => $output,
'message' => theme('status_messages'),
'form-id' => str_replace('_', '-', $form['#form_id']),
);
return array('#type' => 'ajax', '#commands' => $commands);
}?>
Для всех остальных кнопок(edit_submit, edit_delete) работает безупречно, но на изменение quantity он не действует. Нужно писать свой калбек. Помогите плз написать калбек для quantity. В калбеке мне всего лишь нужно сохранить значение quantity. Даже возвращать ничего не нужно. Я так понимаю, что сначала надо вызвать форму корзины и перезаписать её, но скила не хватает. Хелп плз. Буду рад любой помощи. Уже несколько дней бьюсь над этой проблемой
Комментарии
Вы не указали до конца переменную $ajax вот здесь вот
$form['edit_quantity'][$k]['#ajax'] = $ajax;
}?>
Я бы вам советовал её определить примерно следующим образом:
'callback' => 'simplecalc_callback',
'wrapper' => 'answer',
'method' => 'html',
),
ну и затем уже
* AJAX callback
*/
function simplecalc_callback($form, $form_state) {
return strval($form_state['values']['number1'] + $form_state['values']['number2']);
}
Тут держите полный модуль с примером http://xandeadx.ru/blog/drupal/159
Вообще лучше бы гуглили по запросу "drupal ajax"