Puncte:0

Clarificați diferența dintre hook_form_TYPE_alter și hook_form_TYPE_EDIT_alter

drapel ng

Am un site cu o mulțime de modificări de formă de cârlig pentru formele de noduri și constat că trebuie să creez două funcții de cârlig separate pentru a afecta ambii formularele de creare și editare a nodurilor.

De exemplu, trebuie să le pun pe ambele:

module_events_form_node_event_form_alter()

și

module_events_form_node_event_edit_form_alter()

Cu aceeași funcționalitate în ambele funcții, astfel încât să acopere atât nodurile noi, cât și cele editate. Există o modalitate de a avea un hook_form_alter() pentru a acoperi ambele condiții de formular?

Puncte:2
drapel cn

Puteți utiliza fie ID-ul complet al formularului cu tipul de conținut și funcționarea, fie ID-ul formularului de bază node_form. Aceasta este fără operație, dar lipsește și tipul de conținut. Deci, atunci când modificați formularul de bază, trebuie să verificați un anumit tip de conținut dacă nu doriți să modificați toate formele de nod:

/**
 * Implementează hook_form_BASE_FORM_ID_alter().
 */
funcția mymodule_form_node_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  $nod = $form_state->getFormObject()->getEntity();
  if ($node->getType() == 'eveniment') {
    // schimbă forma nodului pentru evenimentul tip conținut și orice operație
  }
}
quantumized avatar
drapel ng
Pentru a clarifica, dacă folosesc ID de formular cu tip de conținut, atunci trebuie să folosesc două funcții pentru a contabiliza atât formularele noi, cât și cele pentru a edita, dar dacă folosesc doar hook_form_alter și verific tipul, atunci nu o fac, corect?
4uk4 avatar
drapel cn
FORM_ID conține atât tipul de conținut + operațiunea (crearea este implicită și implicit este omisă). BASE_FORM_ID-ul pe care l-am sugerat nu conține niciunul dintre ele și le puteți verifica individual. BTW, dacă aveți nevoie de operație, utilizați `$form_state->getFormObject()->getOperation()`.

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.