【问题标题】:Get the value of options in php Drupal Form获取php Drupal Form中options的值
【发布时间】:2011-03-08 08:47:31
【问题描述】:

更新

我已经使用表单 API 制作了一个 Drupal 表单。我使用了元素选择,我的问题是如何获得用户选择的值? 例如:以下代码。我怎么知道用户为“Titles plus teaser”(预告片)选择了什么。谢谢!

form ['planning_detail']['study_groep'] = array (
   '# type =' select ',
   '# title' = 'Pick a value',
   '# options' => array (
   'title' => t ('Titles only '),
   'teaser' => t ('Titles plus teaser'),
   'full text' => t ('Full text '),
   )
);

【问题讨论】:

    标签: php drupal select drupal-fapi


    【解决方案1】:

    您需要为您的表单创建一个表单提交处理程序。您可以通过创建一个名为 FORMNAME_submit 的函数来做到这一点:

    function my_form_submit(&$form, &$form_state) {
      $form_state['values']['field_name'] == 'title'; // TRUE
      $form['field_name'][#options][$form_state['values']['field_name']] ==  t('Titles only '); // TRUE
    }
    

    form_state 是一个数组,其中包含有关表单状态的大量信息,并且它还包含所有提交的值。默认情况下,它们位于由表单元素的字段名称键入的平面列表中。提交句柄是您通常处理用户提交的数据的地方,例如将其保存到数据库等。Forms 还有一个将在提交处理程序之前调用的验证。使用表单 API,如果用户输入未验证,则可能会创建表单错误。当使用 API 创建错误时,在验证步骤中,不会调用提交函数。这意味着您将知道,当调用提交函数时,数据是没有错误的。

    更新:
    如果您想要显示给用户的值,您可以通过访问验证/提交处理程序中提供的表单数组来访问它。我已经在上面的例子中展示了这一点。

    【讨论】:

    • 它不应该 form_submit。如果我选择第一年的工业工程课程,我只能获得第一年,我选择第三年的工业工程课程,如果我刚到第三年。 $ form ['my_select'] ['element'] = array (... );感谢您的评论!
    • 奇怪,我无法访问数组? $form['planning_detail']['study_group']['#value'];也给出 'null' $form_state['planning_detail']['study_group']['#value'];你知道为什么吗?谢谢!
    【解决方案2】:
    function my_form_submit(&$form, &$form_state) {
      $field_key = $form_state['values']['field_name']
      $value = $form['field_name']['#options'][$field_key];
      drupal_set_message($value);
    }
    

    正确的属性'#options'必须在''中

    【讨论】:

      【解决方案3】:

      假设您将这些选项放入选择列表中

      $form['my_select'] = array(
        '#type = 'select',
        '#title' = 'Pick a value',
        '#options' => array(
        'title' => t('Titles only'),
        'teaser' => t('Titles plus teaser'),
        'fulltext' => t('Full text'),
        )
      );
      

      你可以像这样访问值

      $form['my_select']['#value']
      

      【讨论】:

      • 我无法访问数组? $form['planning_detail']['study_group']['#value'];也给出 'null' $form_state['planning_detail']['study_group']['#value'];你知道为什么吗?
      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多