我尝试在表单中打印一个drupal“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
,但它也无效,不接受drupal_render中的#default_value
$f['test3']=array(
'#type'=>'textfield',
'#title'=>'test3',
'#default_value' =>'aaa',
);
我认为这是使用drupal_render的原因。有人有解决方案吗?
答案 0 :(得分:9)
在drupal_get_form中使用的Drupal_render中,未设置#default_value必须使用#value而不是它。
$f['type'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array('1','2','3','4')),
'#value'=> '1',
);
答案 1 :(得分:4)
以下代码不起作用:
$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;
现在可以使用默认值。
答案 2 :(得分:1)
我有同样的问题。最后,我发现了一种方法。正如您所说,default_value不起作用。因此,将default_value固定为0.并更改options数组,将默认值放在顶部。
答案 3 :(得分:0)
如果您查看Drupal's Form API中的示例,您会看到#options
设置采用键值对数组,而在#default_value
中,您应该指定键的默认值,而不是字符串值。
此外,根据documentation for the #options
setting,#options
期待字符串值。所以你的选择应该更像是:
$f['type'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array('1','2','3','4')),
'#default_value'=> '1',
);