drupal #default_value не применяется в опции выбора в drupal_render
Я пытаюсь напечатать дружественный элемент 'select option' в форме. Я думаю, drupal_render
не применяется #default_value
все хорошо, кроме #default_value
не применяется.
где проблема? кто-нибудь знает, как я могу это сделать? делать #default_value
принимать string
значение?
это псевдо из моих кодов:
function test_menu(){
$items=array();
$items['admin/config/regional/test']=array(
'title' => 'test',
'description' => t('test'),
'page callback' =>'drupal_get_form',
'page arguments' => array('test_function'),
);
$items[]=array();
return $items;
}
function test_function(){
$header = array
(
'test1' => t('test1'),
'test2'=> t('test2'),
);
$a=(1,2,3);
$$options=array();
foreach($a as $i=>$v)
{
$f['type'] = array(
'#type' => 'select',
'#options' => array(1,2,3,4),
'#default_value'=>1,
);
$options += array($name=>array( 'test1' => $v,
'test2'=> drupal_render($f['type']) ,
}
$form['table'] = array
(
'#type' => 'tableselect',
'#header' => $header,
'#options' => $options,
'#multiple' => FALSE
//'#empty' => t('No users found'),
);
$form['submit'] = array
(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;
}
Я тестирую textfield
но его тоже не работают и не принимают #default_value
в drupal_render
$f['test3']=array(
'#type'=>'textfield',
'#title'=>'test3',
'#default_value' =>'aaa',
);
Я полагаю, это из-за использования drupal_render . У кого-нибудь есть решение?
4 ответа
В Drupal_render 'е, используемом в drupal_get_form, #default_value не установленное использование должно использовать #value вместо него.
$f['type'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array('1','2','3','4')),
'#value'=> '1',
);
Следующий код не работает:
$form['title'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array(t('opt1'), t('opt3'), t('opt4'), t('opt5'), t('opt6'))),
'#default_value' => array($default_value_key));
$form['title1'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array(t('opt1'), t('opt3'), t('opt4'), t('opt5'), t('opt6'))),
'#default_value' => array($default_value_key));
return $form;
Но потом я сделал следующее:
$form['group'] = array('#tree' => TRUE);
$form['group']['title'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array(t('opt1'), t('opt3'), t('opt4'), t('opt5'), t('opt6'))),
'#default_value' => array($default_value_key));
$form['group']['title1'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array(t('opt1'), t('opt3'), t('opt4'), t('opt5'), t('opt6'))),
'#default_value' => array($default_value_key));
return $form;
И значения по умолчанию теперь работают.
У меня та же проблема. наконец, я нашел один метод. Как вы сказали, default_value не работает. So make the default_value fixed as 0. and change the options array, put the default value on the top.
Если вы посмотрите на пример из API форм Drupal, вы увидите, что #options
настройка принимает массив пар ключ-значение и в #default_value
, вы должны указать ключ значения по умолчанию, а не строковое значение.
Кроме того, согласно документации для #options
установка, #options
ожидает строковых значений. Таким образом, ваш выбор должен быть больше похож на:
$f['type'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array('1','2','3','4')),
'#default_value'=> '1',
);