欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Drupal的#default_value不选择选项应用于drupal_render 有大用

Drupal的#default_value不选择选项应用于drupal_render

我尝试打印的形式的Drupal的选择选项'元素。我想drupal_render不适用#default_value。每天的事情是确定的,除了不施加#default_value
问题在哪里?有人知道我该怎么做? 做#default_value接受string值?Drupal的#default_value不选择选项应用于drupal_render

这是我的伪代码:

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 .anybody有一个解决方案?

+0

有一件事情,人们应该知道的是,应该将autocomplete属性设置为“off”或者Firefox不会显示选定的选项。 – Thony 2015-03-18 17:25:32

回答

6

在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', 
); 
+1

这是很危险的,因为用户将无法覆盖提交的值(描述:用于设置用户无法编辑的值。不应与#default_value混淆,该值用于表单输入,用户可以覆盖默认值。)https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#value – BenMQ 2013-06-14 12:27:33

+0

非常感谢,这个答案是正确的,并解决了我的卡住 – 2016-09-29 04:35:20

+1

@TrungLeNguyenNhat不用客气,我开心看到我的答案可以帮助另一些人在几年后:) – zhilevan 2016-09-29 06:10:49

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', 
); 
+1

。它不适用于drupal_render。在我的orgin代码中,我设置了数组键。问题是'drupal_render'在drupal_get_form中没有设置#default_value。 – zhilevan 2012-07-20 14:24:27

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)); 

来自  http://cn.voidcc.com/question/p-kouwbeqf-qh.html


普通分类: