переопределить $form

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

Аватар пользователя Drimean Drimean 4 июня 2009 в 0:06

Имеется некий модуль, в каком есть вот такая функция:

function module_name_form_alter(&$form, &$form_state, $form_id) {

............................

$form['any']['category'] = array(
'#type' => 'select',
'#title' => t('Any info'),
'#prefix' => '

',
'#size' => 10,
'#suffix' => '

',
'#options' => $taxonomy,
'#multiple' => TRUE,
);

...........................

}

Пишу еще подуль, в каком необходимо $form['any']['category'] сделать с '#type' == 'checkboxes' и еще некие изменения.
Сделал функцию:

function secondmodule_secondname_form_alter(&$form, &$form_state, $form_id) {

............................

$form['any']['category'] = array(
'#type' => 'checkboxes',
'#title' => t('Any info'),
'#options' => $option,
);

...........................

}

Пробовал и так:

function secondmodule_secondname_form_alter(&$form, &$form_state, $form_id) {

............................

$form['any']['category']['#type'] = 'checkboxes';
$form['any']['category']['#title'] = t('Any info');
$form['any']['category']['#options'] = $option;

...........................

}

Но проблема в том, что в итоге ничего не изменяется. Вывожу в secondmodule_secondname_form_alter print_r'ом массив $form, само-собой как надо все. Но в итоге форма имеет типа select. На сколько я понимаю, тут я никак не сообщаю, hook_form_alter какого модуля надо выполнять раньше, какого позже. Лазанья по докам не очень помогло.

Подскажите, пожалуйста, как в итоге переопределить в модуле тип с select на search.

Сорри, если что-то не так написал, с друпалом познакомился всего неделю назад.

Комментарии

Аватар пользователя stenli21 stenli21 10 ноября 2015 в 11:46

Делается это так:
В файле template.php Вашей темы (если этого файла нет, то создаем) пишем следующее:

<?php
 
function название темы_theme () {
    return array (
        
'имя формы' => array (
            
'arguments' => array('form' => NULL),
        ),
    );
 }
?>

имя формы смотрим в коде. К примеру для формы регистрации имя будет такое:
имя формы

Затем добавляете еще одну функцию, в которой собственно все и переопределяете:

<?php
  
function название_темы_имя_формы ($form) {
    
$output '';
        
//начало наших супер-пупер изменений
    
$form['any']['category'] = array(
           
'#type' => 'checkboxes',
           
'#title' => t('Any info'),
           
'#options' => $option,
         );
        
// конец изменений
    
$output .= drupal_render($form);//перерисовываем форму
  
return $output;
}
?>

Вот собственно и все.