Всем привет. Нужно в своей форме вывести элемент shs. Делаю так:
<?php
function my_form($form, &$form_state){
$val = $form_state['values'];
$form['address'] = array(
'#type' => 'textfield',
'#title' => 'Район',
'#default_value' => isset($val['address']) ? $val['address'] : NULL,
'#attributes' => array(
'class' => array('shs-enabled'),
),
'#maxlength' => NULL,
'#element_validate' => array('shs_field_widget_validate'),
'#after_build' => array('shs_field_widget_afterbuild'),
'#shs_settings' => array(
'node_count' => 0,
'create_new_terms' => 0,
'create_new_levels' => 0,
'force_deepest' => 0,
'use_chosen' => 'always',
),
'#shs_vocabulary' => $vocabulary,
'#field_name' => 'address',
'#field_parents' => NULL,
);
?>
Все работает кроме значения по умолчанию, т.е. если делаю сабмит формы то этот элемент отображается без выбранного ранее значения, хотя клиенту передается выбранный tid. Почему так ?
Комментарии
Разобрался, дело в том что в функции shs_field_widget_afterbuild ожидается что значение лежит тут: $element['#default_value']['tid'] по этому поправил в коде:
<?php
'#default_value' => isset($val['address']) ? array('tid' => $val['address']) : NULL,
?>
и все заработало