【问题标题】:Drupal Form foreach loopDrupal 表单 foreach 循环
【发布时间】:2010-11-01 16:01:10
【问题描述】:

我想知道是否有人可以帮助我解决这个问题.. 我在 drupal 的表单中有一个 foreach 循环,它遍历一些 JQuery 滑块的选项。 这工作正常。 但是我想在循环中添加一个标记字段,这样我就可以在 wach 滑块上方有一个标题 div。它不是遍历每一个,而是一次显示所有 4 个标题,然后显示所有 4 个滑块?这是正确的行为吗?请看下文。

foreach ($categories as $key => $title) {

$form['sliderHead'][$key] = array(
  '#type' => 'markup',
  '#value' => "<div id='sliderHeaders'>Header Text</div>"
);

$form['vote'][$key] = array(
  '#type' => 'slider',
  '#title' => $title,
  '#name' => $key, // TODO: define it with the $key variable.
  '#options' => $options,
);

}

非常感谢, 罗斯

【问题讨论】:

    标签: drupal forms drupal-6


    【解决方案1】:

    因为 Drupal 以数组深度的顺序呈现,除非您为所有内容指定 #weight,否则它将按重量排序。

    因此,如果您不想使用权重,则可以这样做,尽管上面使用 #prefix 的建议更适合您的情况:

    foreach ($categories as $key => $title) {
    
      $form['slider']['head'][$key] = array(
        '#type' => 'markup',
        '#value' => "<div id='sliderHeaders'>Header Text</div>"
      );
    
      $form['slider']['vote'][$key] = array(
        '#type' => 'slider',
        '#title' => $title,
        '#name' => $key, // TODO: define it with the $key variable.
        '#options' => $options,
      );
    
    }
    

    【讨论】:

    • 这很有趣,我现在可以晚上睡觉了! :)
    【解决方案2】:

    滑块不是有效类型。您是否使用其他模块来提供该类型?

    如果是这样:

    foreach ($categories as $key => $title) {
      $form['vote'][$key] = array(
        '#type' => 'slider',
        '#title' => $title,
        '#prefix' => t("<div id='sliderHeaders'>Header Text</div>"),
        '#name' => $key, // TODO: define it with the $key variable.
        '#options' => $options,
      );
    }
    

    使用#prefix 表单属性。

    【讨论】:

    • 您好安德鲁,非常感谢您解决了我的问题。是的,该类型在其他地方提供。只是出于兴趣,知道为什么它会乱序循环,这正常吗?
    • 是的,这很正常——它是按照 Drupal 创建表单的方式定义的(来自 formapis)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多