Điểm:1

Cách thêm các trường mới vào hộp thoại 'chỉnh sửa phương tiện' khi nhúng phương tiện

lá cờ cn

Tôi đang cố gắng thêm hộp chọn mới vào hộp thoại bật lên khi chọn 'chỉnh sửa phương tiện' trên phương tiện được nhúng trong WYSIWYG. Tôi đang đề cập đến hộp thoại hiển thị các tùy chọn như 'chú thích' và 'căn chỉnh'

Tôi đã có thể làm cho trường xuất hiện bằng cách sử dụng

function mymodule_form_alter(mảng &$form, FormStateInterface $form_state, string $form_id) {
if($form_id=='editor_media_dialog'){
  $form['size'] = [
    '#title' => t('Kích thước'),
    '#type' => 'chọn',
    '#options' => [
      '' => t('Mặc định'),
      '-nhỏ' => t('Nhỏ'),
      '-trung bình' => t('Trung bình'),
      '-lớn' => t('Lớn'),
    ],
  ];
 }
}

nhưng tôi dường như không thể làm cho giá trị đó được lưu lại. Khi lưu và mở lại hộp thoại, không có tham chiếu đến giá trị mới trong $form_state.

Cách thích hợp để thêm các trường vào hộp thoại 'chỉnh sửa phương tiện' của các thực thể phương tiện được nhúng trong WYSIWYG là gì?

Điểm:1
lá cờ cn

Các hộp thoại này hoạt động như sau:

  • Khi bạn lưu biểu mẫu, mọi thứ bên trong thuộc tính ở trạng thái biểu mẫu được thêm dưới dạng thuộc tính HTML theo nghĩa đen vào <drupal-media> phần tử mà phương thức đã được khởi chạy. Vì vậy, dữ liệu được lưu trong chính phần đánh dấu.
  • Khi bạn tải lại biểu mẫu, tất cả các thuộc tính HTML hiện có trên phần tử sẽ được chuyển qua biểu mẫu, do đó, các đầu vào có thể được điền.

Vì vậy, tất cả những gì bạn cần làm là:

  1. Đưa phần tử biểu mẫu của bạn vào thuộc tính mảng, vì vậy nó sẽ được tự động áp dụng cho đánh dấu. Bạn có thể làm điều này bằng cách thiết lập #bố mẹ trên phần tử.
  2. Đặt #giá trị mặc định đến cái được chuyển vào từ trình chỉnh sửa. Các giá trị đó có sẵn từ đầu vào của người dùng, thay vì các giá trị trạng thái biểu mẫu.

Mã cuối cùng của bạn có thể trông như thế này:

$size = $form_state->getUserInput()['editor_object']['attributes']['size'] ?? '';

$form['size'] = [
  '#title' => t('Kích thước'),
  '#type' => 'chọn',
  '#options' => [
    '' => t('Mặc định'),
    '-nhỏ' => t('Nhỏ'),
    '-trung bình' => t('Trung bình'),
    '-lớn' => t('Lớn'),
  ],
  '#parents' => ['thuộc tính', 'kích thước'],
  '#default_value' => $size,
];
Matt avatar
lá cờ cn
Cảm ơn đã làm việc tuyệt vời! Hữu ích như mọi khi Clive

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