drupal_render не отображает элемент формы - PullRequest
0 голосов
/ 23 октября 2010

У меня есть этот код, который реализует hook_form_alter для формы поиска durpal и добавляет туда пару новых элементов.Я также добавил код перезаписи темы в мой template.php для указанной формы.В дополнение к этому я также передаю элементы формы там.Все работает отлично - добавляет новые элементы, тема используется, но вот проблема.Когда я пытаюсь отобразить каждый элемент формы с помощью drupal_render, он ничего не показывает.Я проверил содержимое массива $ form и в нем есть все необходимые данные формы.Это исключение из моего кода -

mymod.module

function mymod_form_alter(&$form, $form_state, $form_id) {
    switch ($form_id) {
        case 'search_theme_form':           
            $form['prop_type'] = array(
               '#type' => 'select',
               '#default_value' => 'Selection A',
               '#options' => array("Selection A","Selection B"),
               '#attributes' => array('class'=>'Bold'),     
        );
        break;
   }
}

template.php -

 function mytheme_theme() {
    return array(
        'search_theme_form' => array(
            'arguments' => array('form' => NULL),       
            'template' => 'search_myblock_form',        
        ),

    );

}

И есть еще одна странная проблема:DSM Девел не мог даже показать, что находится внутри $ формы.Мне пришлось использовать print_r, чтобы сначала получить строковое значение и передать его в dsm для отображения.Для чего стоит, еще одна вещь, внутри моего шаблона темы, есть эта переменная ($ search_form) со всеми визуализированными элементами моей формы.Поскольку я хочу по-разному описать отдельный элемент, я не могу его использовать;Мне нравится отображать отдельные элементы самостоятельно.

1 Ответ

0 голосов
/ 25 октября 2010

hook_theme должен быть внутри вашего модуля, а не template.php.

Но, похоже, вам не нужен form_alter и тому подобное.Template.php предназначен для того, чтобы переопределить эти функции темы:

function MYTHEMENAME_search_theme_form($form) {
  return "<h1>ceci nes't pas un form</h1>";
}

Затем обновите реестр вашей темы, и вы должны увидеть строку h1, появляющуюся на месте формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...