Drupal FAPI: doğrulama sonra nodeform ilgili form elemanları ekle

2 Cevap php

Ben Drupal 6.x kullanın Benim kendi modülü ben her düğüm formunu değiştirmek bir kullanarak ona kendi doğrulama işleyicisi eklemek

$form['#validate'][] = 'my_own_validation_function';

Sonra işlevi var

function my_own_validation_function($form, &$form_state)
{
  //if validation fails, i would like to rebuild the form to add additional form elements in hook_form_alter
  $form_state['rebuild'] = True;
}

Doğrulama işlevleri saygı yok benim sorunum ist, benim 'yeniden' = şeklinde becaus Gerçek doğrulama sonra hook_form_alter tarafından işlenir asla. Ama benim ek form öğe eklemek için hook_form_alter gerekir.

Benim problem için bir çözüm var mı? Ben bir "pointer" olarak belirlenen ve $ form_state Ya da kendi bir doğrulama işleyicisi form_state değişiklikler bile saygı değildir?

Teşekkürler ve alkış.

2 Cevap

ok şimdi anladım! Her şey yolunda ama bir hataydı: benim kendi doğrulama işleyicisi, i form_set_error kurmak ve orada bir hata olduğunu ve $ form_state ['yeniden'] = true olursa form hata kalmayıncaya kadar, fonksiyon drupal_get_form formu yeniden olmayacaktır. Ben form.inc hattında 141 buldum

if ((!empty($form_state['storage']) || !empty($form_state['rebuild'])) && !empty($form_state['submitted']) && !form_get_errors()) {

Eğer hook_form_alter yeniden adlandırılır olmadığından emin misin, ya da belki sadece orada gerçek için rebuild özelliğini kontrol edilir?

IIRC, sizin yaklaşım doğru - doğrulama sırasında $form_state['rebuild'] = True ayarı form yeniden neden olmalıdır. Ama normalde bir ek 'işaretçi' (örneğin, $form_state['myModule_rebuild_indicator'] = TRUE set ve hook_form_alter bu kontrol ediyorum ('yeniden' özelliği will be false again at that point).