Ben iki düğme göndermek görüntüleyen bir form var. İlk gönderme düğmesi bir değere $ form_state ['depolama'] ayarlar. İkinci düğmesine, sonra bu $ form_state ['depolama'] değeri okur gönderin. Değer ayarlanırsa, o zaman bir başarı mesajı görüntülenir. Değeri ayarlanmış değilse, o zaman bir fail mesajı görüntülenir.
İşte benim sorunu ürerler kodu:
function mymodule_test_admin() {
return drupal_get_form('mymodule_test_form');
}
function mymodule_test_form(&$form_state) {
$form['mymodule_test_form1'] = array(
'#type' => 'fieldset',
'#title' => t('test 1'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#tree' => TRUE
);
$form['mymodule_test_form1']['submit'] = array(
'#type' => 'submit',
'#value' => t('button 1'),
'#submit' => array('mymodule_test_form1_submit')
);
$form['mymodule_test_form2'] = array(
'#type' => 'fieldset',
'#title' => t('test 2'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#tree' => TRUE
);
$form['mymodule_test_form2']['submit'] = array(
'#type' => 'submit',
'#value' => t('button 2'),
'#submit' => array('mymodule_test_form2_submit')
);
return $form;
}
function mymodule_test_form1_submit($form, &$form_state) {
$form_state['storage']['test_1'] = 'test 1';
drupal_set_message(t('@message', array('@message' => $form_state['storage']['test_1'])));
}
function mymodule_test_form2_submit($form, &$form_state) {
if (isset($form_state['storage']['test_1'])) {
drupal_set_message(t('success'));
} else {
drupal_set_message(t('fail!'));
}
}
Eğer ilk gönderme düğmesi, $ form_state ['depolama'] tıkladığınızda düzgün ayarlanır. Eğer ikinci Gönder düğmesini tıkladığınızda, ileti "başarı" görüntülenir. Şimdiye kadar iyi. Şimdi bir sayfa yenileme yapmak. Mesajı "başarısız!" gösterilir.
Yani her şey sayfayı yenileyin kadar sağa kadar çalışır. Sayfa yenileme esasen sadece ikinci işlevi teslim çağırıyor. Teorik olarak, $ form_state ['depolama'] hala doldurulur edilmeli ve görüntülenen mesaj "başarı" olmalıdır. Ancak, $ form_state dökümü bir göz alarak sayfayı yenileyin sonra NULL doları form_state ['depolama'] gösterir. $ Form_state ['depolama'] sayfa yenileme temizlenir ediliyor eğer benim kod mantığı yanlış ya da ben söyleyemem.
Herhangi bir fikir?
Yardımlarınız için teşekkürler.