修改内容配置文件表单以显示矩阵中的复选框

2023-12-24

我需要像这样显示矩阵http://eugen.gotdns.com/test/zeitplaner.png http://eugen.gotdns.com/test/zeitplaner.png以内容简介的形式。我可以用CSS以这种方式排列复选框,但我还需要顶部和左侧的一些标签。我应该使用 $form 数组来添加一些标签吗?这可以用 css 来完成吗?


我同意 Mike Crittenden 的观点,即做到这一点的方法是使用表格,但我不同意他想要的方式。

最好的解决方案是为表单制作自定义主题功能。基本上,您所做的就是循环遍历表单项并呈现它们。最简单的方法是一次渲染一行表格。

我复制了一些显示此示例的旧代码,但您可能需要对其进行一些修改。我有一些不确定性,不知道我需要哪些行和列,所以我将其做得更加通用,您将需要它,并在生成表单时使用表单发送了一些数据。
您可以以任何您想要的方式呈现表单项,这还取决于您如何构建表单项,以及如何循环(如果可能的话)。下面的代码基于这样的表单结构:$form['category']['item'] = checkbox。如果您以不同的方式构建表单项,则需要以不同的方式循环遍历它们。然而,您需要做的是, id 一次渲染一行表单项。$rows将是一个数组的数组,其中的每个数组将是矩阵的行,并且应按顺序包含该行中的元素。

当您渲染表单项时,Drupal 会知道它已被渲染,因此当您使用drupal_render($form)只有尚未呈现的表单项才会呈现,例如提交按钮等。

function theme_form_id($form) {
    $labels = array(
      ...
    );
    $cats = $form['categories']['#value']; // This would for you be Mo, Di ...
    $pros = $form['profile_items']['#value']; // array of name the form items have.
    $header = array('Ziet' ...);
    $rows = array();

    foreach ($pros as $item) {
        $new_row = array($labels[$item]);
        foreach ($cats as $cat) {
            $new_row[] = array('data' => drupal_render($form[$cat][$item]), 'class' => 'checkbox');
        }
        $rows[] = $new_row;
    }
    $output = theme('table', $header, $rows);
    $output .= drupal_render($form);
    return $output;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修改内容配置文件表单以显示矩阵中的复选框 的相关文章

随机推荐