【问题标题】:Drupal 6: How to keep multiple form elements in one line when creating custom form?Drupal 6:创建自定义表单时如何将多个表单元素保持在一行中?
【发布时间】:2012-06-01 08:49:15
【问题描述】:

我创建了一个自定义表单,其中包含四个元素。 我想将所有这些元素放在一行中。怎么办?

我用谷歌搜索了它,但找不到任何相关内容..如果 CSS 有任何事情要做,那么请建议我将 DIV 放在哪里。

我在下面粘贴代码 -

<?php

function taskform_form(&$node, $form_state)
{


  $form['date'] = array(
    '#type' => 'date', 
    '#title' => t('Date'),        
  );

  $form['edproject'] = array(
    '#type' => 'select', 
    '#title' => t('Project'), 

    '#options' => array(
      1 => 'Konnected', 
      2 => 'eLearning', 
      3 => 'Others',
    ),
    '#description' => t('Choose a project'),
  );

  $form['task'] = array(
    '#type' => 'textfield', 
    '#title' => t('Task'), 
    '#size' => 30,
    '#required' => TRUE,
    '#maxlength' => 30,
    '#description' => t('Enter the task'),
  );

  $form['remarks'] = array(
    '#type' => 'textarea', 
    '#title' => t('Remarks'), 
    '#size' => 30,
    '#cols' => 6,
    '#description' => t('Enter remarks (If any).'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Add Task'),
    '#submit' => array('taskform_form_submit'),
  );
  return $form;

}

【问题讨论】:

    标签: forms drupal drupal-6


    【解决方案1】:

    您可以使用表单元素的前缀和后缀属性并将其显示在一行中。如果对您有用,请查看下面的代码。

    function taskform_form(&$node, $form_state)
    {
      $form['date'] = array(
        '#type' => 'date', 
        '#title' => t('Date'),
        '#prefix' => '<table><tr><td>',
        '#suffix' => '</td>',   
      );
    
      $form['edproject'] = array(
        '#type' => 'select', 
        '#title' => t('Project'), 
    
        '#options' => array(
          1 => 'Konnected', 
          2 => 'eLearning', 
          3 => 'Others',
        ),
        '#description' => t('Choose a project'),
        '#prefix' => '<td>',
        '#suffix' => '</td>',
      );
    
      $form['task'] = array(
        '#type' => 'textfield', 
        '#title' => t('Task'), 
        '#size' => 30,
        '#required' => TRUE,
        '#maxlength' => 30,
        '#description' => t('Enter the task'),
        '#prefix' => '<td>',
        '#suffix' => '</td>',
      );
    
      $form['remarks'] = array(
        '#type' => 'textarea', 
        '#title' => t('Remarks'), 
        '#size' => 30,
        '#cols' => 6,
        '#description' => t('Enter remarks (If any).'),
        '#prefix' => '<td>',
        '#suffix' => '</td></tr></table>',
      );
    
      $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Add Task'),
        '#submit' => array('taskform_form_submit'),
      );
    
      return $form;
    }
    

    【讨论】:

    • 您是否清除了缓存并看到该表单显示在类似结构的表格中。
    【解决方案2】:

    或者,您可以使用前缀和后缀将整个元素包装在一个 div 中,并从 CSS 中定位该 div。这样您就可以将结构信息与渲染分离。

    另一种选择是编写具有魔力的自定义主题函数。但是,我会选择前缀后缀解决方案,因为它在短期内更容易维护。

    查看this quick tutorial,主题表单部分描述了您的选项。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多