drupal #default_value未在drupal_render的select选项中应用

Yus*_*sef 5 render default-value drupal-7 drupal-render drupal-forms

我尝试的形式打印Drupal的选择选项'元素.我觉得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;
 }    
Run Code Online (Sandbox Code Playgroud)

我测试 textfield但它也没有用,不能#default_value在drupal_render中接受

    $f['test3']=array(
    '#type'=>'textfield',
    '#title'=>'test3',
    '#default_value' =>'aaa',
);
Run Code Online (Sandbox Code Playgroud)

我想这是使用drupal_render的问题.有人有解决方案吗?

Yus*_*sef 11

在Drupal_render中用于drupal_get_form的#default_value未设置使用必须使用#value instaed.

$f['type'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array('1','2','3','4')),
'#value'=> '1',
);
Run Code Online (Sandbox Code Playgroud)

  • 这是危险的,因为用户将无法覆盖提交的值(说明:用于设置用户无法编辑的值。不应与 #default_value 混淆,后者用于用户可以覆盖默认值的表单输入。 ) https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#value (2认同)