Puncte:0

hook_form_alter() pentru a adăuga substituent la un câmp de text prin modul personalizat

drapel vn

Ar trebui să fie foarte simplu și totuși, nu pot identifica motivul pentru care acest lucru nu adaugă un substituent la un câmp dintr-un formular:

funcția posts_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if ($form_id == "node_post_form" || $form_id == "node_post_edit_form") {
    $form['field_post_subject']['#attributes']['placeholder'] = t("bla");
    dpm($form['field_post_subject']);
  }
}

Acest lucru confirmă că cheia substituent este setat:

introduceți descrierea imaginii aici

Hook_form_alter() funcționează conform așteptărilor pentru alte lucruri pe care trebuie să le schimb, cu excepția substituentului. M-am uitat peste tot și este întotdeauna aceeași soluție așa că mă întreb ce îmi lipsește?

drapel cn
Ai reconstruit memoria cache? De asemenea, verificați șablonul de temă și orice funcții de preprocesare; este posibil să eliminați sau să ignorați substituentul de pe linie.
drapel vn
Mulțumesc @PatrickKenny. Da, l-am reconstruit + încercat cu alte teme, inclusiv Bartik. Am incercat si cu alte forme dar fara succes pana acum.
drapel cn
Ce tip de câmp este?
leymannx avatar
drapel ne
Se pare că ați setat substituentul pe un element „#type” => „container”. Trebuie să intri în „widget”.
drapel vn
Vă mulțumim pentru îndrumări @leymannx - soluția sugerată de 4uk4 a funcționat
drapel vn
Este un câmp simplu de text simplu @PatrickKenny
Puncte:2
drapel cn

Acum setați atributul substituent la un container, care ar trebui să fie vizibil în HTML sursă, dar nu are niciun efect asupra formularului.

Trebuie să adăugați substituentul la un element de formular. Găsiți cel puțin unul, pentru câmpuri cu mai multe valori sau cu mai multe proprietăți, în interiorul widget cheie (în ieșirea dvs. de depanare un copil al containerului).

Câmpurile de text au deja o opțiune configurabilă pentru substituenți. Dacă trebuie să-l suprascrieți dinamic, trebuie să căutați elementul de formular și să setați un nou #substituent.

Acesta este elementul de formular pe care îl căutați:

StringTextfieldWidget::formElement

$element['valoare'] = $element + [
  '#type' => 'câmp text',
  '#default_value' => $articole[$delta]->valoare ?? NUL,
  '#size' => $this->getSetting('size'),
  '#placeholder' => $this->getSetting('placeholder'),
  '#maxlength' => $this->getFieldSetting('max_length'),
  '#attributes' => ['class' => ['js-text-full', 'text-full']],
];
drapel vn
Multumesc mult pentru raspunsul tau complet! Pentru referințe viitoare, `$form['field_name']['widget'][0]['value']['#placeholder']` este locul unde este setat substituentul.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.