У меня есть несколько чекбоксов завернутых в филсет.
$form['n'] = array(
'#type' => 'fieldset',
'#title' => 'Устройства',
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
while(($row = mysql_fetch_array($result))){
$q2=$row["nid"];
$form['n']['copy'.$q2] = array(
'#type' => 'checkbox',
'#title' => t('Send me a copy.'),
);
'#type' => 'fieldset',
'#title' => 'Устройства',
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
while(($row = mysql_fetch_array($result))){
$q2=$row["nid"];
$form['n']['copy'.$q2] = array(
'#type' => 'checkbox',
'#title' => t('Send me a copy.'),
);
Мне нужно пробежаться по ним и выбрать их занчение. Интуитивно понимаю, что по ним можно пробежаться с помощью foreach-а используя fieldset в который они запиханы.
Что-то типа этого псевдокода:
$t1=0;
foreach ($tform as $form_state['n'])
{
$t1++;
}
foreach ($tform as $form_state['n'])
{
$t1++;
}
Как мне пробежаться по чекбоксам?
конечно можно типа этого
for($i=0;$i<10;$i++)
{
if ($form_state['values']['copy'.$i] == 1)
$t1++;
}
{
if ($form_state['values']['copy'.$i] == 1)
$t1++;
}
но сам понимаю, что это тупо.
Комментарии
Наверное, нужно все формы забить в БД. Я вижу только такой способ. Может кто думает иначе?
сделайте филдсет родителем http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.... и чекбоксы переместятся в $form_state['values']['n']
Решил:
$form['table'] = array('#tree' => true,'#theme' => 'tabular_form', );
$result = db_query("SELECT name, uid, mail from {users}");
while(($row = mysql_fetch_array($result))){
$q2=$row["uid"];
$form['table']['data'][$q2]['chosen'] = array('#type' => 'checkbox','#title' => t(''),);
}
.......
//обход этих чекбоксов
foreach (element_children($form['table']['data']) as $key)
{
drupal_set_message($form_state['values']['table']['data'][$key]['chosen']);
}
}