【问题标题】:Calling custom Theme() function for form in Drupal 7在 Drupal 7 中为表单调用自定义 Theme() 函数
【发布时间】:2012-04-21 14:35:20
【问题描述】:

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

【问题讨论】:

    标签: drupal themes hook


    【解决方案1】:

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

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

    您还需要告诉 Drupal 您的表单将使用此主题,方法是在您的表单函数中执行此操作:

    $form['#theme'] = 'agil_list_form';
    

    【讨论】:

    • 太棒了。有用。我错过了表单声明中的 $form['#theme'] 并且在我阅读的文档中没有提到它......谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多