На страницу формы через ajax call-back подгружается контент.
Подгружается методом replace в элемент '#type' = 'radios'
<?php
function myhook_form_alter(&$form, &$form_state, $form_id)
// ...
$options = create_options($color, $thik, $wh);
$res = array(
'#type' => 'checkboxes',
'#prefix' => '<div id="products">',
'#default_value' => 0,
'#options' => $options,
'#suffix' => '</div>',
'#pre_render' => array('options_preprocess'),
'#attributes' => array('class'=>array('asc')),
);
$form['submitted']['result'] = $res;
}
// ...
function search_callback($form, &$form_state){
return $form['submitted']['result'];
}
?>
Все работает нормально. Но появилась необходимость показывать изначально полный неотфильтрованный список. не вопрос, сделал начальную инициализацию $options - тоже работает конечно, НО!
поплыла верстка checkbox'ов.
Оказалось что когда контент отдает сама форма, то чеки (input) заворачиваются в обертку:
а когда контент возвращает ajax, через search_callback, то
то есть без обертки в div.
в pre_render массив элемента в обеих случаях идентичен и поправить нечего. В массиве #theme_wrappers единственный элемент "checkboxes"
Так что тогда смотреть, куда копать?
Хочу добиться одинакового вывода и при начальной инициализации и при ajax запросе.
Комментарии
ну вот стал вчитываться в то что написал и сразу вижу причину - "uniform".
jQuery uniform.
Он включен не как бихэйвор, а через document.ready(), то есть срабатывает только один раз при первой загрузке страницы.
А потом по ajax не срабатывает. Мне кстати не нравится как оформляет кнопки uniform, и не понятно где можно темизировать его вывод...