Form API: как правилно создать select без options

Главные вкладки

Аватар пользователя Ryo Hazuki Ryo Hazuki 10 апреля 2010 в 11:06

Здравствуйте! Начал темизировать сайт. Необходимо создать пустой select, а после загрузки страницы с помощью jQuery подгрузить данные json из файла.
Вот код селекта:

<?php
$form
['name_opt']['font_select'] = array(
    
'#type' => 'select',
    
'#title' => t('Font of site name'),
    
'#id' => 'fontSelect',
    
'#default_value' => $settings['font_select'],
    
'#suffix' => '</span></span>',
);
?>

Вот код jQuery:

$.getJSON('/sites/all/themes/pshop_theme/js/fonts.json', {}, function(json){
        $('#fontSelect').empty();
        var i = 0;
        while(json.fonts[i])
        {
                $('#fontSelect').append('<option value="'+json.fonts[i]+'">' + json.fonts[i] + '</option>');
                i++;
        }
 });

Вот файл fonts.json:

{
        "fonts":[
                "academy engraved let",
                "algerian",
                "amaze",
                "arial",
                "arial black"
        ],
        "sizes":[
                "1",
                "2",
                "3"
        ]
}

Все отлично подгружается, НО Drupal ругается:
warning: Invalid argument supplied for foreach() in Z:\home\PShop\www\includes\form.inc on line 1430.
А также у селекта не работает default_value когда сохраняешь настройки темы, хотя $settings['font_select'] стоит нужное значение...
Конечно можно и не подгружать файл, а прописать все в опшнах, но это слишком громоздко, если много информации, и хочется все сделать красиво. Заранее спасибо!)

Комментарии

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 10 апреля 2010 в 11:08

"Ryo Hazuki" wrote:
а после загрузки страницы с помощью jQuery подгрузить данные json из файла.

Потом будет топик на тему, что друпал не воспринимает подгруженные знаничения, смотри в сторону AHAH, мей би там есть подходящее тебе событие

Аватар пользователя kosilko kosilko 10 апреля 2010 в 11:48

"Ryo Hazuki" wrote:
Начал темизировать сайт. Необходимо создать пустой select, а после загрузки страницы с помощью jQuery подгрузить данные json из файла.

"Ryo Hazuki" wrote:
$.getJSON('/sites/all/themes/pshop_theme/js/fonts.json',

просто не в кассу спрошу - а все-таки, что мешает заполнить опции селекта на стороне сервера, стандартными средствами Forms API?

Аватар пользователя Ryo Hazuki Ryo Hazuki 11 апреля 2010 в 21:35

Почитал про ahah - ничего не понял...((( Неужели обязательно нужно делать hook_menu и свой модуль писать? И каким образом вызвать ahah при загрузке формы? Я в документации нашел события click, blur и change для элементов формы. Извините за столько вопросов, просто привык к аяксу, а в ahah никак въехать не могу(