2012-07-19 4 views
4

양식에 drupal 'select option'요소를 인쇄하려고합니다. drupal_render이 적용되지 않습니다. #default_value이 적용됩니다. #default_value을 제외한 모든 항목이 정상입니다.
어디에 문제가 있습니까? 아무도 내가 이것을 할 수있는 방법을 알고 있습니까? do #default_value 값을 허용 하시겠습니까?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를 사용 beacuse 가정하자 해결책이 있으십니까? 당신이 Drupal's Form API의 예를 보면

+0

사람들은 자동 완성 속성을 'off'로 설정하거나 Firefox가 선택한 옵션을 선택한대로 표시하지 않아야한다는 사실을 알고 있어야합니다. – Thony

답변

6

이 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

+0

감사합니다.이 답변은 정확하고 내 붙임성을 해결했습니다. –

+1

@TrungLeNguyen 저에게 진심으로 환영합니다. 행복합니다. 내 대답을 본 몇 년 후에 다른 사람을 도울 수 :) – zhilevan

0

, 당신은 #options 설정은 키 - 값 쌍의 배열을하고 #default_value에, 기본 값이 아닌 문자열 값의 를 지정해야합니다 것을 볼 수 있습니다.

또한 documentation for the #options setting에 따르면 #options은 문자열 값을 필요로합니다. 그래서 당신의 선택이 더 같이해야한다 : Drupal_render의에서

$f['type'] = array(
    '#type' => 'select', 
    '#options' => drupal_map_assoc(array('1','2','3','4')), 
    '#default_value'=> '1', 
); 
+1

. drupal_render와 작동하지 않습니다. 내 orgin 코드에서 배열 키를 설정합니다. 문제는 drupal_get_form에서 사용하는 'drupal_render'입니다. #default_value를 설정하지 않았습니다. – zhilevan

4

다음 코드 어쩌려 구`t 작업 :

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

그리고 디폴트 값은 현재 작동 : 다음

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

그러나 나는 다음과 같은했다.

1

동일한 문제가 있습니다. 마지막으로 한 가지 방법을 찾았습니다. 앞에서 말했듯이 default_value는 작동하지 않습니다. 그래서 default_value를 0으로 고정시키고 옵션 배열을 변경하고, 기본값을 상단에 놓습니다.