Existe uma maneira de converter um formulário regular e adicionar espaços reservados com um módulo, ou isso deve ser feito com um modelo de formulário ou com jQuery?
22
Esse é um espaço reservado para HTML5, você pode adicioná-lo como um atributo a qualquer elemento, e os navegadores habilitados para HTML5 reagirão de acordo:
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'some_form') {
$form['some_element']['#attributes']['placeholder'] = t('Placeholder text');
}
}
Uma função recursiva curta como essa pode ser útil se você desejar adicionar espaços reservados automaticamente para cada campo de texto em um formulário (com base no título do campo neste exemplo):
function MYMODULE_auto_placeholders(&$element) {
if ( isset($element['#type']) && $element['#type'] == 'textfield') {
// set placeholder
$element['#attributes']['placeholder'] = $element['#title'];
// hide label
$element['#title_display'] = 'invisible';
}
foreach (element_children($element) as $key) {
MYMODULE_auto_placeholders($element[$key]);
}
}
Então, no seu formulário alter function basta chamar
MYMODULE_auto_placeholders($form);
Esse método funcionará para praticamente todos os campos de texto de um formulário, com exceção daqueles adicionados em #process
funções (como os campos de texto alt e title de um campo de imagem, por exemplo).
Tentei a resposta de Clive:
Mas, para minha surpresa, coloquei o espaço reservado no invólucro do campo de texto, não no próprio campo de texto. Então eu tentei uma variação da seguinte forma, funcionou!
fonte
Basta adicionar o espaço reservado na matriz #attributes para o elemento do campo de formulário, como no código a seguir.
fonte
Deparei com isso e achei que a resposta de Clive parecia agradável ao adicionar automaticamente espaços reservados.
Você precisa de algumas pequenas alterações para acertar no drupal 8, então aqui está a mesma resposta, mas adequada para o seu tema drupal 8.
fonte
Se você deseja direcionar uma instância de formulário diretamente, use hook_form_FORM_ID_alter. Pode ser mais organizado do que usar condicionais. Minha solução para segmentar apenas a instância do bloco de formulário de pesquisa.
fonte