Drupal 6: работа со скрытыми полями - PullRequest
0 голосов
/ 10 января 2010

Я работаю над проблемой, которая у меня возникла: перехватить поле, установить значение по умолчанию и скрыть его. Проблема заключается в том, что он принимает значение по умолчанию, но передает только первый символ значения в базу данных.

//Here is how I'm doing it
$form['field_sr_account'] = array( '#type' => 'hidden', '#value' => '45');

Я полагаю, что с тем, как я структурировал свой массив, что-то не так, но я не могу этого понять. Я нашел сообщение, http://drupal.org/node/59660, где кто-то нашел решение только для первого отправленного символа

//Here is the format of the solution to the post - but it's not hidden
$form['field_sr_account'][0]['#default_value']['value'] = '45';

Как мне добавить к этому скрытый атрибут?

Ответы [ 3 ]

2 голосов
/ 11 января 2010

Вы пытались использовать #default_value insted #value?

Кроме того, если вы пытаетесь передать данные, которые не будут изменены в форме, вы должны использовать http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html#value.

1 голос
/ 20 мая 2012

Интересное решение от http://drupal.org/node/257431#comment-2057358

CCK Скрытые поля

/**
* Implementation of hook_form_alter().
*/
function YourModuleName_form_alter(&$form, $form_state, $form_id) {
  if (isset($form['type']) && isset($form['#node'])) {
    ### Make a CCK field becoming a hidden type field.
    // ### Use this check to match node edit form for a particular content type.
    if ($form_id === 'YourContentTypeName_node_form') {
      $form['#after_build'] = array('_test_set_cck_field_to_hidden');
    }
  }
}

function _test_set_cck_field_to_hidden($form, &$form_state) {
  $form['field_NameToBeHidden'][0]['value']['#type'] = 'hidden';
  $form['field_NameToBeHidden'][0]['#value']['value'] = 'testValue';

  return $form;
}
1 голос
/ 18 января 2010

На самом деле ответ состоял в том, чтобы установить значение и скрытый атрибут отдельно, а затем снова установить значение в обработчике отправки, используя следующий формат.

Я не уверен, если это все необходимо, я полагаю, мне, вероятно, не нужно назначать его в форме alter, но это работает, поэтому я оставлю это в покое ...

$form['#field_sr_account'] = $club;
    $form['field_sr_account'] = array( '#type' => 'hidden','#value' => $club);
   }
}

/*in submit handler, restore the value in the proper format*/
$form_state['values']['field_sr_account'] = array('0' => array('value' => $form['#field_sr_account']));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...