Drupal Form:want для показа предыдущей формы оценивает как default_value на странице

Мои любимые немногие ...

1: Javadoc, чтобы вставить документ о методе, являющемся методом инъекции объекта Spring.

 Method to set the <code>I${enclosing_type}</code> implementation that this class will use.
* 
* @param ${enclosing_method_arguments}<code>I${enclosing_type}</code> instance 

2: Окно отладки, чтобы создать FileOutputStream и записать содержимое буфера в файл. Используется, когда вы хотите сравнить буфер с прошлым запуском (используя BeyondCompare), или если вы не можете просмотреть содержимое буфера (через inspect), потому что он слишком большой ...

java.io.FileOutputStream fos = new java.io.FileOutputStream( new java.io.File("c:\\x.x"));
fos.write(buffer.toString().getBytes());
fos.flush();
fos.close();
7
задан David Espart 17 February 2011 в 16:30
поделиться

3 ответа

Вы можете использовать $ form_state ['storage'] в обработчике отправки для хранения значений между шагами. Так что добавьте функцию отправки, например, так:

function addnewproduct_form_submit ($form, &$form_state) {
  // Store values
  $form_state['storage']['addnewproduct_productname'] = $form_state['values']['productname'];
  // Rebuild the form
  $form_state['rebuild'] = TRUE;    
}

Тогда ваша функция построителя форм станет:

function addnewproduct_form(&$form_state) { 

$form = array();

$form['productname'] = array (
'#type' => 'textfield',
'#title' => t('Product Name'),
'#required' => TRUE,
'#size' => '20',

);

if (isset($form_state['storage']['addnewproduct_productname'])) {
  $form['productname']['#default_value'] = $form_state['storage']['addnewproduct_productname'];
}

return $form;
}

Просто помните, что ваша форма будет генерироваться, пока ваш $ form_state ['storage'] заполнен. Таким образом, вам нужно будет настроить обработчик отправки и отключить ($ form_state ['storage']), когда будете готовы сохранять значения в базе данных и т. Д.

Если ваша форма больше похожа на фильтр, т.е. используется для отображения, а не для хранения информации, тогда вы можете обойтись простым

function addnewproduct_form_submit ($form, &$form_state) {
  // Rebuild the form
  $form_state['rebuild'] = TRUE;    
}

. Когда форма перестраивается, она получит доступ к $ form_state ['values'] из предыдущей итерации.

15
ответ дан 6 December 2019 в 15:25
поделиться

Я обычно решаю эту проблему, помещая отправленное значение в переменную $ _SESSION в поле отправить крючок. Затем при следующей загрузке формы я проверяю переменную $ _SESSION на соответствующий ключ,

-1
ответ дан 6 December 2019 в 15:25
поделиться

Не уверен, что это сработает для вас, но вы можете попробовать добавить ключ #default_value в массив формы

$form['productname'] = array (
'#type' => 'textfield',
'#title' => t('Product Name'),
'#required' => TRUE,
'#size' => '20',
'#default_value' => variable_get('productname', ''),
);

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

-1
ответ дан 6 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: