Ajax SelectedDepends Control
Материал из AOW
от 15 декабря 2010
Ajax SelectedDepends Control
Пример использования
'birthday' => array(
// тип нового контрола
'type' => 'ajax_select',
// идентификатор блока, обрамляющего контрол
'name' => 'birthday',
// функция обратного вызова, обрабатывающая выбор в селектах кроме последнего
'callback' => array(
'module' => 'db_pg_users',
'func' => 'birthday',
),
// варианты выбора для первого селекта
'options' => array_combine(range(1960, 2010), range(1960, 2010)),
// имена и подписи к списку селектов
'items' => array(
array('title' => 'Год', 'name' => 'year'),
array('title' => 'Месяц', 'name' => 'month'),
array('title' => 'День', 'name' => 'day'),
),
// обработчик вешается только на последний селект
'onchange' => 'alert(this.value);'
),
Пример обработчика
public static function birthday() {
// в обработчик гетом передается имя сработавшего селекта
if (c_url::gets('name') == 'month') {
// постом передается вся форма
$count = date("t", mktime(0, 0, 0, $_POST['month'], 1, $_POST['year']));
$range = range(1, $count);
} else {
$range = range(1, 12);
}
return array(
// необходимо вернуть имя селекта, для которого передаются значения
'name' => count($range) > 12 ? 'day' : 'month',
// и передать сами значения
'options' => array_combine($range, $range),
);
}

