Đây là một câu hỏi khác với cùng trường tham chiếu thuật ngữ phân loại mà tôi đã đề cập trong câu hỏi trước đây của tôi.
Người dùng có vai trò Quản trị viên và Huấn luyện viên được cấp quyền đăng ký Người dùng sinh viên thông qua chế độ biểu mẫu "Thêm sinh viên" tùy chỉnh (user_add_student_form
). Sẽ tốt hơn cho UX nếu tôi có thể đặt ['#giá trị mặc định']
sau đó select_a_school
trường tham chiếu thuật ngữ phân loại đến cùng một trường mà người dùng hiện đang đăng nhập thuộc về.
tôi đang làm việc với hook_form_alter()
trong tiền xử lý mẫu vì đó là cách nhà phát triển trước đó đã thiết lập:
/**
* Triển khai hook_form_alter().
*/
function projectname_form_alter(&$form, &$form_state, $form_id) {
// Lấy User hiện tại.
$current_user_proxy = \Drupal::currentUser();
$current_user_id = $current_user_proxy->id();
if (!$current_user_proxy->isAnonymous()) {
$currentUser = Người dùng::load($current_user_id);
// Lấy trường hiện tại của User.
$currentSchool = $currentUser->field_select_a_school->getValue();
// Xử lý biểu mẫu Thêm sinh viên.
if ($form_id == 'user_add_student_form') {
// Những công việc này.
$form['account']['roles']['#access'] = FALSE;
$form['account']['roles']['#default_value'] = [
0 => 'đã xác thực',
1 => 'sinh viên',
];
// Điều này không hoạt động.
$form['field_select_a_school']['#default_value'] = $currentSchool;
}
Cài đặt $form['account']['roles']['#default_value']
hoạt động như mong đợi, nhưng trường tham chiếu thuật ngữ phân loại chống lại mọi nỗ lực như vậy.
Tôi đã thử các biến thể sau:
$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;
bãi($currentSchool);
Symfony VarDumper bãi rác()
của $currentSchool
có vẻ như nó chứa cấu trúc dữ liệu chính xác:
^ mảng:1 [â¼
0 => mảng:1 [â¼
"id_mục tiêu" => "916"
]
]
Ở đây, để tham khảo, là tương ứng bãi rác()
cho trường mục tiêu trong biểu mẫu $
:
"field_select_a_school" => mảng:8 [â¼
"#type" => "thùng chứa"
"#parents" => mảng:1 [â¶]
"#attributes" => mảng:1 [â¶]
"widget" => mảng:22 [â¼
"#title" => "Chọn Trường*"
"#mô tả" => ""
"#field_parents" => []
"#required" => đúng
"#delta" => 0
"#cân nặng" => 0
"#element_validate" => mảng:1 [â¶]
"#key_column" => "id_mục tiêu"
"#type" => "chọn"
"#options" => mảng:47 [â¶]
"#default_value" => []
"#multiple" => sai
"#shs" => mảng:7 [â¶]
"#attributes" => mảng:1 [â¶]
"#attached" => mảng:1 [â¶]
"#entity_type" => "người dùng"
"#bundle" => "người dùng"
"#after_build" => mảng:1 [â¶]
"#field_name" => "field_select_a_school"
"#parents" => mảng:1 [â¶]
"#cây" => đúng
"#form_id" => "user_add_student_form"
]
"#access" => đúng
"#cân nặng" => 22
"#cache" => mảng:3 [â¶]
"#form_id" => "user_add_student_form"
]
Dù tôi có cố gắng thế nào đi chăng nữa, $form['field_select_a_school']['widget']['#default_value']
luôn kết thúc bằng một mảng trống. ¯\_(ã)_/¯
Tôi đang thiếu gì ở đây?