shs widget в своей форме

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

Аватар пользователя posmotret posmotret 1 декабря 2015 в 16:53

Всем привет. Нужно в своей форме вывести элемент 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. Почему так ?

Комментарии

Аватар пользователя posmotret posmotret 1 декабря 2015 в 17:18

Разобрался, дело в том что в функции shs_field_widget_afterbuild ожидается что значение лежит тут: $element['#default_value']['tid'] по этому поправил в коде:

<?php
'#default_value' => isset($val['address']) ? array('tid' => $val['address']) : NULL,
?>

и все заработало