用PHP在Drupal模块中创建标准页面和表格

5

我创建了一个简单菜单结构的模块。我能够在PHP中以编程方式检索所有学生的视图。现在,我想在一个简单的表格中返回所有学生的信息。

  • 如何创建标准页面?
  • 如何将值返回到简单的表格中?

表格的结构如下:

UGhentID姓名学生名字学生位置

12874749 Smith Nick 纽约 . . .

3个回答

16
如果您想创建一个新页面,您需要在一个模块中使用 hook_menu
例如:
/**
 * Implementation of hook_menu.
 */
function mymodule_menu() {
  $items = array();

  $items['myPage'] = array(
    'title' => 'Finances',
    'page callback' => 'mymodule_page',
    'access callback' => 'user_access',
    'access argument' => array('access nodes'),
  );
  return $items
}

/**
 * Page callback
 */
function mymodule_page() {
  $output = mymodule_table();
  return $output;
}

您可以在这里看到,我在页面回调中调用“mymodule_table()”,这是您构建表格的地方。

function mymodule_table() {
    $rows = array();
    // build the table header
    $header = array();
    for ($i = 1; $i <= 5; $i++) {
      $header[] = array('data' =>  $i, 'class' => 'header-class');
    }
    $row = array();
    for ($i = 1; $i <= 5; $i++) {
      $row[] = array('data' =>  $i, 'class' => 'row-class');
    }
    $rows[] = array('data' => $row);
    $output .= theme('table', $header, $rows, $attributes = array('class' => 'my-table-class'));
    return $output;
}

这段代码应该输出一张带有表头和多行数据的表格,包含5列。


这已经过时了(可能适用于Drupal 6)。对于Drupal 7,您需要使用更新的版本,其中传递给函数的参数除第一个外都是关联数组。请参见我下面添加的答案,评论中没有足够的空间。 - DrCord

4
我不确定您所说的“标准页面”是什么意思,但我认为您可能想看一下示例项目(http://drupal.org/project/examples),特别是page_example模块。
对于您的表格,Drupal提供了一个theme_table函数,非常有用。在最简单的形式中,您只需要传递一个包含标题和行的数组,它将返回一个表格的HTML代码。

是的,我喜欢你的评论...当提供源代码时,不仅仅是某个特定的答案,这对其他人也会有帮助。 - Mohammad Alabed
这里还有一个示例,每一行都有编辑和删除选项,可以在这里找到说明。 - eQ19

2
基于@Haza的回答,这里是一份更新后的Drupal 7数据表创建函数:
function mymodule_table() {
    $rows = array();
    // build the table header
    $header = array();
    for ($i = 1; $i <= 5; $i++) {
      $header[] = array('data' =>  $i, 'class' => 'header-class');
    }
    $row = array();
    for ($i = 1; $i <= 5; $i++) {
      $row[] = array('data' =>  $i, 'class' => 'row-class');
    }
    $rows[] = array('data' => $row);
    $data = array(
        'header' => $header,
        'rows' => $rows,
        'attributes' => $attributes
    );
    $output = theme('table', $data);
    return $output;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接