Drupal Form API - захват ключа array () -> # значение - PullRequest
2 голосов
/ 25 августа 2011

У меня есть hook_form (), и я пытаюсь отправить данные в базу данных.
Когда генерируются параметры формы, она генерирует как <option value="foo"> Foo </option>

Я не пытаюсь получить значение параметра.
Я пытаюсь взять часть между <option>, которая будет 'Foo'

Моя форма выглядит так:

/*
 * Implentation of hook_form().
 */
function f25_favorites_form() {
  $form['path_options'] = array(
    '#type' => 'value',
    '#value' => array('default' => t('Add a favorite'), 'foo' => t('Foo'), 'bar' => t('Bar')),
  );  

  $form['path'] = array(
    '#type' => 'select',
    '#title' => t('Select Page'),
    '#required' => TRUE,
    '#weight' => '11',
    '#options' => $form['path_options']['#value'],
  );

  $form[submit] = array(
    '#type' => 'submit',
    '#weight' => '1000000',
    '#value' => t('Add')
  );

  return $form;
}

И это form_submit ():

/*
 * Write Form data to database
 */
function f25_favorites_form_submit($form, &$form_state){
  global $user;
  $data = array(
    'uid' => $user->uid,
    'path' => $form_state['values']['path'],
    'title' => $title,
    'weight' => $weight,
    'timestamp' => time(),
  );

  drupal_write_record('', $data);
}

Что я ожидаю

Мне кажется, что-то похожее на это:

    'path' => $form_state['values']['path'],

Но вместо этого будьте примерно так:

    'title' => $form_state['values']['path'][#value],

1 Ответ

1 голос
/ 25 августа 2011

В соответствии с Drupal docs переменная $ form содержит данные из f25_flected_form (), поэтому это должно работать:

'title' => $form['path_options']['#value'][$form_state['values']['path']],

В основном вы бы взяли значение, которое выбрано (получено через $ form_state ['values'] ['path']) и так как он является ключом для массива $ form ['path_options'] ['# value'], вы должны найти текст по нему.

...