Điểm:0

hook_form_alter() để thêm trình giữ chỗ vào trường văn bản thông qua mô-đun tùy chỉnh

lá cờ vn

Nó phải rất đơn giản, tuy nhiên, tôi không thể xác định lý do tại sao điều này không thêm trình giữ chỗ vào trường trong biểu mẫu:

function 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("blah");
    dpm($form['field_post_subject']);
  }
}

Điều này khẳng định rằng khóa giữ chỗ đang được thiết lập:

nhập mô tả hình ảnh ở đây

hook_form_alter() hoạt động như mong đợi đối với những thứ khác mà tôi cần thay đổi, ngoại trừ trình giữ chỗ. Tôi đã tìm khắp nơi và luôn có cùng một giải pháp nên tôi tự hỏi mình đang thiếu gì?

lá cờ cn
Bạn đã xây dựng lại bộ đệm? Ngoài ra, hãy kiểm tra mẫu chủ đề của bạn và mọi chức năng tiền xử lý; bạn có thể đang xóa hoặc bỏ qua trình giữ chỗ ở cuối dòng.
lá cờ vn
Cảm ơn @PatrickKenny. Có, tôi đã xây dựng lại nó + đã thử với các chủ đề khác bao gồm cả Bartik. Tôi cũng đã thử với các hình thức khác nhưng không có may mắn cho đến nay.
lá cờ cn
Đó là loại trường nào?
leymannx avatar
lá cờ ne
Có vẻ như bạn đã đặt trình giữ chỗ trên phần tử `'#type' => 'container'`. Bạn cần vào `widget`.
lá cờ vn
Cảm ơn sự hướng dẫn của bạn @leymannx - giải pháp 4uk4 được đề xuất đã hoạt động
lá cờ vn
Đó là một trường văn bản đơn giản @PatrickKenny
Điểm:2
lá cờ cn

Bạn hiện đang đặt thuộc tính trình giữ chỗ cho vùng chứa. Thuộc tính này sẽ hiển thị trong HTML nguồn nhưng không có bất kỳ ảnh hưởng nào trên biểu mẫu.

Bạn cần thêm trình giữ chỗ vào thành phần biểu mẫu. Bạn tìm thấy ít nhất một, đối với nhiều trường đa giá trị hoặc nhiều thuộc tính, bên trong phụ tùng key (trong đầu ra gỡ lỗi của bạn là phần tử con của vùng chứa).

Các trường văn bản đã có tùy chọn có thể định cấu hình cho trình giữ chỗ. Nếu bạn cần ghi đè lên nó một cách linh hoạt, bạn phải tìm phần tử biểu mẫu và đặt #placeholder mới.

Đây là phần tử biểu mẫu bạn đang tìm kiếm:

StringTextfieldWidget::formElement

$element['value'] = $element + [
  '#type' => 'trường văn bản',
  '#default_value' => $items[$delta]->value ?? VÔ GIÁ TRỊ,
  '#size' => $this->getSetting('size'),
  '#placeholder' => $this->getSetting('placeholder'),
  '#maxlength' => $this->getFieldSetting('max_length'),
  '#attributes' => ['class' => ['js-text-full', 'text-full']],
];
lá cờ vn
Cảm ơn rất nhiều vì phản hồi đầy đủ của bạn! Đối với các tham chiếu trong tương lai, `$form['field_name']['widget'][0]['value']['#placeholder']` là nơi đặt trình giữ chỗ.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.