Form gönderme işleyicisini nasıl değiştirebilirim?


16

Herhangi bir nedenle, veritabanında depolanmadan hemen önce, her metin alanındaki bazı karakterleri (varsa) herhangi bir biçimde değiştirmem gerekiyor. Başka bir deyişle, gönderilen tüm verileri alıp karakterlerini değiştirebileceğim bir kancaya ihtiyacım var.
Bu çözümü buldum:

function hook_form_alter($form, $form_state, $form_id) {
  $form['#submit'] = 'my_custom_submission_function';
}

Ancak bu iyi bir fikir değil, çünkü geri gönderme sürecinin geri kalanıyla da ilgilenmem gerekiyor. Sadece bazı karakterleri değiştirmem gerekiyor. Bunu yapmak için kanca var mı? Çözümler nelerdir?

Yanıtlar:


22

$form['#submit']form gönderme işleyicileri dizisini saklar. Girdiğiniz kod ile yalnızca kendi kodunuzu ekleyerek üzerine yazıyorsunuz. İstediğiniz sonucu almak için gönderme işleyicinizi dizideki ilk öğe olarak şu şekilde eklemelisiniz:

array_unshift($form['#submit'], 'mymodule_custom_submission');

Doğru değerleri doğru formlara almak ve bazı karakterleri değiştirmek muhtemelen kendi içinde daha büyük bir sorundur. Hiçbir şeyi kırmadığınızdan emin olmak için değiştirmeniz gereken formları / alanları daraltmak isteyebilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.