コアモジュールの連絡フォームのtextareaメッセージを特定の文字数に制限する必要があります。
ここに事実があります
Form APIは、textareaフィールドタイプにmaxlengthを設定することを許可しません[プレーンHTMLは許可します]
Maxlength モジュールでは、実際に最大長を設定することはできません。各コンテンツタイプのフィールド管理セクションで定義されているフィールドの最大長から最大長を取得します
Hook_element_infoを使用して新しいフォーム要素タイプを作成しても、#maxlength
をtextareaに追加することは保証されません。その上、私が成功した場合、コンタクトフォームモジュールを再度変更して、実際のメッセージテキストエリアフィールドを私のもので上書きする必要があります。
だから私はそれを単純明快に変更できますか?
Webサイトのすべてのtextareaフィールドを変更する最良のアイデアは何ですか?
まず、設定フォームを定義してから、フックフォームを変更しました。
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 ;
}
}
}
これは正常に動作しているようです。
このように Maxlength モジュールを使用して、制御する要素に#maxlengthプロパティと#maxlength_jsプロパティの両方を配置できます。
$form['comments'] = array(
'#type' => 'textarea',
'#title' => t('Comments'),
'#maxlength_js' => TRUE,
'#maxlength' => 1000,
);
Form APIは、textareaフィールドタイプにmaxlengthを設定することを許可しません[プレーン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),
);