İletişim formunda metin alanı için bir maksimum uzunluk nasıl ayarlanır


11

Temel modül iletişim formunun textarea mesajını belirli sayıda karakterle sınırlandırmam gerekiyor.

İşte gerçekler

  1. Form API'sı tekdüze alan türleri için bir makslength ayarlanmasına izin vermez [düz HTML ise]

  2. MaxLength modülü, aslında fazla uzunluğu ayarlamak için izin vermez. Her bir içerik türünün yönetim alanı bölümünde tanımlanan maksimum uzunluğunu alanın maksimum uzunluğundan alır

  3. Hook_element_info kullanarak yeni bir form öğesi türü oluşturma, hala teminat yok #maxlengthtextarea ekleyebilirsiniz . Ayrıca başarılı olursam, gerçek mesaj textarea alanını benimkini geçersiz kılmak için iletişim formu modülünü tekrar değiştirmem gerekiyor.

Yani bunu basit ve anlaşılır şekilde değiştirebilir miyim?

Web sitesindeki tüm metin alanlarını değiştirmek için en iyi fikir nedir?

Yanıtlar:


6

Form API, metin alanı alan türleri için bir maksimum uzunluk ayarlanmasına izin vermiyor [düz HTML ise]

Bu kesinlikle doğru değil ... HTML5, textareas için bir maxlength özelliği tanıttı, önceki sürümlerde bu yok (bkz. Https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea ).

Drupal 7 ile gelen varsayılan şablonların tümü XHTML kullanır, bu nedenle HTML5 için açık desteğin olmaması mükemmeldir.

Sürece Doctype olarak ise HTML5, bu muhtemelen çalışacaktır:

$form['element'] = array(
  '#type' => 'textarea',
  '#attributes' => array('maxlength' => 200),
);

Clive aslında çalışan bir çözüm buldum, aşağıya gönderdim. Cevabınız için teşekkürler.
drupal_stuff_alter

6

Maxlength modülünü bu şekilde kullanabilir , kontrol etmek istediğiniz öğelere #maxlength ve #maxlength_js özelliklerini koyabilirsiniz.

$form['comments'] = array(
  '#type' => 'textarea',
  '#title' => t('Comments'),
  '#maxlength_js' => TRUE,
  '#maxlength' => 1000,
);

4

Öncelikle bir ayar formu tanımladım, sonra bir kanca formu değiştirdim:

function contact_form_form_alter(&$form, &$form_state, $form_id) {

  if ($form_id == 'contact_site_form') {
    $maximum_limit = (int) variable_get('contact_form_maxlength', 500);
    if($maximum_limit && is_numeric($maximum_limit)) {
    $form['message']['#title'] = $form['message']['#title'] . t(' (maximum @max characters)', array( '@max' => $maximum_limit));
    $form['message']['#maxlength'] = $maximum_limit ;
    }
  }
}

Bu iyi çalışıyor gibi görünüyor.


Tıpkı bir yana, hook_form_FORM_ID_alter uygulayabilir ve form kimliği kontrolünü kaydedebilirsiniz, yani: contact_form_form_contact_site_form_alter. Kuşkusuz, işlev adı olarak bir ağız dolusu.
Alfred Armstrong

Bu harika bir fikir. Bu alışkanlığım yok :-)
drupal_stuff_alter
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.