Drupal Form foreach loop - PullRequest
       5

Drupal Form foreach loop

2 голосов
/ 01 ноября 2010

Интересно, кто-нибудь может мне помочь с этим .. У меня есть цикл foreach в форме в drupal, который перебирает опции для некоторых ползунков JQuery. Это отлично работает. Однако я хотел добавить поле разметки в цикле, чтобы у меня мог быть заголовок div над ползунком wach. Вместо того, чтобы проходить через каждый из них, он отображал все 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,
);

}

Большое спасибо, Ross

Ответы [ 2 ]

1 голос
/ 05 ноября 2010

Поскольку 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,
  );

}
0 голосов
/ 01 ноября 2010

Ползунок не является допустимым типом. Вы используете другой модуль для предоставления этого типа?

Если так:

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.

...