When adding a textfield to a form using ctools ajax, the default value does not get set.

This bug doesn't occur using the core fapi functions, because drupal_rebuild_form clears $form['#post'], which is checked for in _form_builder_handle_input_element(). When using ctools_rebuild_form, $form['#post'] persists and it passes through this conditional in _form_builder_handle_input_element():

if (($form['#programmed']) || ((!isset($form['#access']) || $form['#access']) && isset($form['#post']) && (isset($form['#post']['form_id']) && $form['#post']['form_id'] == $form_id))) {
  $edit = $form['#post'];
  foreach ($form['#parents'] as $parent) {
    $edit = isset($edit[$parent]) ? $edit[$parent] : NULL;
  }

If there isn't a POST value for the textfield, $edit gets set to NULL.

In form_type_textfield_value(), the default value only gets set when $edit is FALSE, so the textfield never gets it's default value.

It appears that this was discovered in Drupal 7, and a check for NULL was added in this thread:

http://drupal.org/node/335035#comment-2615976

The attached patch adds a check for NULL to D6.

CommentFileSizeAuthor
textfield_default_value.patch768 bytesmsonnabaum

Comments

dkinzer’s picture

Status: Active » Needs review

Status: Needs review » Needs work

The last submitted patch, textfield_default_value.patch, failed testing.

Status: Needs work » Closed (outdated)

Automatically closed because Drupal 6 is no longer supported. If the issue verifiably applies to later versions, please reopen with details and update the version.