Что мне нужно, это раскрывающийся список, который по умолчанию пуст. Имеется поле «Создать нового клиента», а затем список клиентов. Вот код для поля меню:
$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-'),
);
Вот функция, которую я использую для заполнения $ fullName:
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;
}
Вот распечатка из $ fullName
array (
1 => 'tim arthur',
2 => 'val brant',
)
Все отлично работает. Единственная проблема заключается в том, что он вставляет число после -add нового клиента-. так это выглядит так:
Client:
blank
-add new client-
0
tim arthur
val brant
Я распечатал значения моего поля опции:
'#options' => array(
'add' => 'add new client',
0 => array(
1 => 'tim arthur',
2 => 'val brant',
),
),
число увеличивается, если я даю -дд нового клиента- числовое значение. Например, если я сделаю:
'#options' => array ('5' => '-add new client-', $fullNames),
затем 0 превращается в 6.
Любые идеи о том, как сделать так, чтобы мой массив не был вложенным. Я тоже пробовал это, но получил ошибку:
'#options' => array (
'add' => '-add new client-',
array_keys($fullNames) => array_values($fullNames)),