Điểm:6

Làm cách nào để xóa hình ảnh mặc định khỏi các trường hình ảnh?

lá cờ ru

Tôi cần tạo một trường hình ảnh có giá trị mặc định, giá trị này cũng phải có giá trị rỗng trên các thực thể nội dung đơn lẻ. Trái ngược với trường văn bản hoặc trường tham chiếu thực thể, tôi không thể xóa giá trị mặc định này trên các thực thể nội dung đơn lẻ.

Ví dụ. Tôi có thể tạo một trường văn bản có giá trị mặc định là "Lorem ipsum". Khi tạo nút, trường được điền sẵn văn bản đó, nhưng tôi cũng có thể xóa văn bản đó và trường sẽ trống.

Nhưng trên các trường hình ảnh, không có nút/tùy chọn nào để xóa giá trị mặc định. Tôi có thể xóa hình ảnh ghi đè, nhưng không thể xóa hình ảnh mặc định. Ngay cả sau khi tải lên một hình ảnh không phải mặc định, lưu trữ và sau đó xóa lại hình ảnh đó, giá trị mặc định vẫn hoạt động trở lại.

Làm cách nào tôi có thể làm cho trường hình ảnh "nullable"?

Lưu ý rằng tôi không thể sử dụng tham chiếu thực thể phương tiện vì tôi phải hỗ trợ SVG và những hình ảnh đó cũng không được rò rỉ vào nhóm phương tiện toàn cầu có thể sử dụng lại.

Điểm:5
lá cờ cn

Trên thực tế, hình ảnh mặc định không gây ra bất kỳ lưu dữ liệu nào nhưng nó ảnh hưởng đến trình định dạng hình ảnh, vì vậy nếu nó không tìm thấy giá trị nào cho trường hình ảnh thì nó sẽ hiển thị hình ảnh mặc định được đặt trong cài đặt trường.

bạn có thể kiểm tra DB hoặc chỉ cần tạo một nội dung với hình ảnh mặc định A.png, sau đó chuyển đến cài đặt trường và thay đổi hình ảnh mặc định thành B.png, và khi bạn hiển thị nút của mình, bạn sẽ thấy B.png đó sẽ được hiển thị trong nội dung.

Vì vậy, nếu bạn không muốn xem hình ảnh mặc định trong một số trường hợp, bạn có thể sao chép trình định dạng hình ảnh mặc định và làm bất cứ điều gì bạn muốn.

và nếu bạn thực sự muốn lưu dữ liệu cho trường hình ảnh với giá trị mặc định, bạn có thể làm điều đó bằng cách thay đổi dạng nút như bên dưới:

function my_module_form_node_article_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  foreach (array_keys($form['actions']) as $action) {
    if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] == = 'gửi') {
      array_unshift($form['actions'][$action]['#submit'], 'my_module_test_form_submit');
    }
  }
}

function my_module_test_form_submit(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {
  $image = $form_state->getValue('field_image');
  if (trống($image[0]['fids'])) {
    $form_state->setValue('field_image', $form['field_image']['widget'][0]['#default_image']['fid']);
  }
}
lá cờ ru
Cảm ơn về gợi ý với trình định dạng trường, điều này giải thích rất nhiều vấn đề mà tôi gặp phải. Trường hình ảnh là trường duy nhất trong lõi không lưu trữ các giá trị mặc định trong DB, nhưng tính toán chúng trong trình định dạng trường. Đây là lý do tại sao hình ảnh không thể rỗng và API lưu trữ không trả về giá trị mặc định chính xác. Tôi đã gửi [báo cáo lỗi về d.o](https://www.drupal.org/project/drupal/issues/3250680) về vấn đề này
Alireza Tabatabaeian avatar
lá cờ cn
Tôi có thể tưởng tượng mức độ mệt mỏi khi nhận ra rằng bạn thực sự đã không lưu bất kỳ giá trị nào trên một trường trong một thời gian dài trong khi bạn nghĩ rằng mình đã lưu

Đă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.