연락처 양식에서 텍스트 영역 필드의 최대 길이를 실제로 설정하는 방법


11

핵심 모듈 문의 양식의 텍스트 영역 메시지를 특정 문자 수로 제한해야합니다.

사실은 다음과 같습니다

  1. Form API를 사용하면 textarea 필드 유형에 대한 최대 길이를 설정할 수 없습니다 [일반 HTML은]

  2. 최대 길이의 모듈은 실제로 최대 길이를 설정하는 것을 허용하지 않습니다. 각 컨텐츠 유형의 관리 필드 섹션에 정의 된 필드의 최대 길이에서 최대 길이를 가져옵니다.

  3. hook_element_info를 사용하여 새 양식 요소 유형을 작성해도 여전히 #maxlength텍스트 영역에 추가 할 수는 없습니다 . 또한 성공하면 실제 메시지 텍스트 필드를 대체하기 위해 연락처 양식 모듈을 다시 변경해야합니다.

그래서 나는 그것을 간단하고 간단하게 바꿀 수 있습니까?

웹 사이트의 모든 텍스트 영역을 변경하는 가장 좋은 아이디어는 무엇입니까?

답변:


6

양식 API를 사용하면 텍스트 영역 필드 유형에 대한 최대 길이를 설정할 수 없습니다 (일반 HTML은 수행함).

그것은 사실이 아닙니다 .... HTML5는 textareas에 대한 maxlength 속성을 도입했습니다. 이전 버전에는 없습니다 ( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea 참조 ).

Drupal 7과 함께 제공되는 기본 템플릿은 모두 XHTML을 사용하므로 HTML5를 명시 적으로 지원하지 않는 것이 좋습니다.

doctype HTML5이면 다음과 같이 작동합니다.

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

Clive 실제로 작동하는 솔루션을 찾았습니다. 아래에 게시했습니다. 답변 주셔서 감사합니다.
drupal_stuff_alter

6

이와 같이 Maxlength 모듈을 사용할 수 있으며 제어하려는 요소에 #maxlength 및 #maxlength_js 속성을 둘 수 있습니다 .

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

4

먼저 설정 양식을 정의한 다음 후크 양식을 변경했습니다.

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 ;
    }
  }
}

이것은 잘 작동하는 것 같습니다.


따로, hook_form_FORM_ID_alter를 구현하고 양식 ID 확인을 저장하십시오 (예 : contact_form_form_contact_site_form_alter). 분명히 함수 이름으로 한 입 가득합니다.
Alfred Armstrong

좋은 생각입니다. 나는이 습관이 없다 :-)
drupal_stuff_alter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.