Добрый день.
Никак не могу решить, казалось бы, простую задачу.
Делаю вывод новостей с другого ресурса (через парсинг xml). Мне необходимо, чтобы при нажатии на radio-button изменялись новости в форме. Создал простую конструкцию:
$items['main.htm'] = array(
'title' => 'Main',
'access callback' => TRUE,
'page callback' => 'drupal_get_form',
'page arguments' => array ('main_fc_form'),
'type' => MENU_CALLBACK,
);
return $items;
}
function main_fc_form($form, &$form_state) {
if (!isset($_SESSION['news_type'])) {
$_SESSION['news_type'] = 1;
}
$form['main_news_type'] = array(
'#title' => t(''),
'#type' => 'radios',
'#default_value' => $_SESSION['news_type'],
'#options' => array(
1 => 'Главное',
2 => 'Законодательство, практика',
3 => 'Привлечение к ответственности',
4 => 'Обучение, конференции',
5 => 'Прочие новости о банкротствах',
),
'#ajax' => array(
'callback' => 'main_fc_ajax',
'wrapper' => 'fc-form',
'method' => 'html',
'effect' => 'fade',
),
);
$form['main_news_result'] = array(
'#markup' => main_page_display_current_news(), //функция вывода новостей через темизацию
);
return $form;
}
function main_fc_ajax($form, &$form_state) {
$_SESSION['news_type']=$form_state['values']['main_news_type'];
return drupal_get_form('main_fc_form'); // здесь я пробовал различные варианты, результат - одинаков.
}
Так вот, в блоке такая конструкция работает (обновляется все нормально), а при использовании hook_menu - не работает.
Я понимаю, что просто "туплю", но не могу понять где. Подскажите пожалуйста ошибку?
Комментарии
$_SESSION вам не нужен, drupal_get_form тоже
http://drupal.org/node/752056
Все это я уже читал. Но у меня не выходит сделать именно мою проблему, а $_SESSION мне для своих целей нужно.
А Вы уверены, что в качестве обертки надо указать fc-form, а не main-fc-form? И не лучше ли будет самому присваивать форме идентификатор либо через preffix-suffix, либо через $form['#id'] = 'my-form-id' (но это так, к вопросу о руке на пульсе)?
Кроме того с методом replace вместо html и возвращать в функции ajax $form (я имею в виду return $form вместо return drupal_get_form('main_fc_form')) будет удобнее, Вам не кажется?
читайте до просветления
в этом коде $_SESSION не нужно
Спасибо за комментарии, буду просветляться. Бывает же такое )