Iată o întrebare diferită cu același câmp de referință al termenului de taxonomie pe care l-am menționat întrebarea mea anterioară.
Utilizatorilor cu roluri de Administrator și Antrenor li se acordă permisiunea de a înregistra utilizatori Studenți printr-un mod personalizat de formular „Adăugați student” (user_add_student_form
). Ar fi mai bine pentru UX dacă aș putea seta ['#valoare implicită']
al select_a_school
câmpul de referință al termenului de taxonomie la aceeași școală căreia îi aparține utilizatorul conectat în prezent.
eu lucrez cu hook_form_alter()
în preprocesul șablonului, deoarece așa a configurat dezvoltatorul anterior:
/**
* Implementează hook_form_alter().
*/
funcția projectname_form_alter(&$form, &$form_state, $form_id) {
// Obține utilizatorul curent.
$current_user_proxy = \Drupal::currentUser();
$current_user_id = $current_user_proxy->id();
dacă (!$current_user_proxy->isAnonymous()) {
$currentUser = User::load($current_user_id);
// Obține școala utilizatorului actual.
$currentSchool = $currentUser->field_select_a_school->getValue();
// Gestionează formularul Add Student.
if ($form_id == 'user_add_student_form') {
// Acest lucru funcționează.
$form['account']['roles']['#access'] = FALSE;
$form['account']['roles']['#default_value'] = [
0 => 'autentificat',
1 => „elev”,
];
// Asta nu merge.
$form['field_select_a_school']['#default_value'] = $currentSchool;
}
Setare $form['account']['roles']['#default_value']
funcționează conform așteptărilor, dar câmpul de referință al termenului de taxonomie rezistă tuturor acestor încercări.
Am încercat următoarele variante:
$form['field_select_a_school']['#default_value'] = $currentSchool;
$form['field_select_a_school']['#default_value'][] = $currentSchool;
$form['field_select_a_school']['widget']['#default_value'] = $currentSchool;
$form['field_select_a_school']['widget']['#default_value'][] = $currentSchool;
dump($Scoala curenta);
Symfony VarDumper dump()
de $currentSchool
pare că conține structura corectă de date:
^ matrice:1 [â¼
0 => matrice:1 [â¼
"target_id" => "916"
]
]
Aici, pentru referință, este corespunzătoare dump()
pentru câmpul țintă în $form
:
„field_select_a_school” => matrice:8 [â¼
"#type" => "container"
„#parents” => matrice:1 [â¶]
„#attributes” => matrice:1 [â¶]
„widget” => matrice:22 [â¼
"#title" => "Selectați o școală*"
"#description" => ""
„#field_parents” => []
„#required” => adevărat
"#delta" => 0
„#greutate” => 0
„#element_validate” => matrice:1 [â¶]
"#key_column" => "target_id"
"#type" => "selectați"
„#options” => matrice:47 [â¶]
„#default_value” => []
„#multiple” => fals
„#shs” => matrice:7 [â¶]
„#attributes” => matrice:1 [â¶]
„#attached” => matrice:1 [â¶]
"#entity_type" => "utilizator"
"#bundle" => "utilizator"
„#after_build” => matrice:1 [â¶]
"#field_name" => "field_select_a_school"
„#parents” => matrice:1 [â¶]
„#tree” => adevărat
"#form_id" => "user_add_student_form"
]
„#access” => adevărat
„#greutate” => 22
„#cache” => matrice:3 [â¶]
"#form_id" => "user_add_student_form"
]
Indiferent ce încerc, $form['field_select_a_school']['widget']['#default_value']
ajunge întotdeauna să conțină o matrice goală. ¯\_(ã)_/¯
Ce îmi lipsește aici?