2010-01-10 4 views
0

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

//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'; 

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

ответ

1

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

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

$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'])); 
2

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

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

+0

Я использовал оба. Я считаю, что значение #value является правильным параметром ... – tpow

1

интересным решением от 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; 
} 
Смежные вопросы