2012-02-27 35 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