3

Drupal 不会在我的模块中为我的表单调用我的主题函数。

我在 .module 文件中添加了 hook_theme,如下所示:

function agil_theme() {
    return array(
        'agil_list_form' => array(
            'render element' => 'form',
        ),
    );
}

在哪里 :

  • agil 是我的模块的名称(不是我的主题)
  • agil_list_form 是我的表单声明的名称(带有默认主题的 chich 渲染)

我想调用一个函数来创建我自己的标记,如下所示:

function theme_agil_list_form($form) {
  $output  = "<table><th><td></td><td>".t('Title')."</td><td>".t('Link')."</td></th>";
    $output .= "<tr><td>";
  $output .= drupal_render($form['name']);
  ...

但是 Drupal 从来没有调用这个函数......我清除了缓存但什么都没有......

我在哪里错过了什么?

我还阅读了有关 Drupal 7 中新主题声明的信息:http: //drupal.org/update/modules/6/7#hook_theme_render_changes

4

1 回答 1

5

Drupal 7 中的所有主题函数都采用单个数组参数(通常命名为$vars$variables按约定命名),并且该数组包含您已声明的变量/渲染元素。主题函数本身如下所示:

function theme_agil_list_form($vars) {
  $form = $vars['form'];
  // Now manipulate $form
}

您还需要通过在表单函数中执行此操作来告诉 Drupal 您的表单将使用此主题:

$form['#theme'] = 'agil_list_form';
于 2012-04-21T16:12:48.007 回答