2012-02-27 77 views
0

我需要的是默認爲空的下拉列表。它有一個' - 創建新客戶'字段,然後是一個客戶列表。下面是菜單字段代碼:Drupal 7:不需要的字符在選擇下拉列表

$form['client']['existing'] = array(
    '#title' => t('Client'), 
    '#type' => 'select', 
    '#options' => array('add' => t('add new client'),$fullName), 
    '#empty_option' => '', 
    '#description' => t('Select an existing Client or choose -create new client-'), 
); 

下面是我用它來填充$全名的函數:

function myForm_get_names() 
{ 
    $query = db_select('client', 'c'); 
    $query->fields('c', array('cid','fname','lname')); 
    $fullName = array(); 
    $result = $query->execute(); 

    foreach ($result as $r) 
    { 
    $fullName[$r->cid] = $r->fname . " " . $r->lname; 
    } 
    return $fullName; 
} 

這裏的打印出的$全名

array (
    1 => 'tim arthur', 
    2 => 'val brant', 
) 

一切的偉大工程。唯一的問題是它插入一個數字後添加新的客戶端。所以它看起來像:

Client: 
blank 
-add new client- 
0 
    tim arthur 
    val brant 

我打印出來我的選項字段的值:

'#options' => array(
    'add' => 'add new client', 
    0 => array(
    1 => 'tim arthur', 
    2 => 'val brant', 
), 
), 

數量的增加,如果我給-add新的客戶機的數值。例如,如果我這樣做:

'#options' => array ('5' => '-add new client-', $fullNames), 

則0變成一個6

我如何能得到我的陣列中的任何想法,不能嵌套。我也嘗試過這一點,但得到了一個錯誤:

'#options' => array (
    'add' => '-add new client-', 
    array_keys($fullNames) => array_values($fullNames)), 

回答

0

原來的解決方案是非常簡單的。因此,而不是

'#options' => array('add' => t('add new client'),$fullName), 

只是做

'#options' => $fullName, 

,然後在我的myForm_get_names()函數而不是

$fullName = array(); 

$fullName = array('add' => '-add new client-'); 

沒得變化還要別的嗎。 h0tw1r3的array_merge想法很狡猾。

0
#options => array_merge(array('add' => '-add new client-'),$fullNames) 
+0

謝謝。這解決了它!我會評價你的答案,但我沒有足夠的代表。 – pnkflydgr 2012-02-27 23:23:45

+0

它的確顯示正確,但它沒有攜帶我的客戶端ID作爲值。它返回這個數組作爲我的選擇: 陣列( ''=> '', '添加'=> '-add新的客戶機', 0 => 'VAL布蘭特', 1 =>「TIM阿瑟', 2 =>'bob adams', ), 但我已經用姓命令它們,所以它的值應該是2,1,3 – pnkflydgr 2012-02-28 01:07:58