Điểm:0

Cách tạo mô-đun với cài đặt mặc định

lá cờ cn

Tôi đang làm việc với một mô-đun liên kết đến một tệp âm thanh và phát nó khi có điều gì đó xảy ra. Tôi có nó để có một nút trong cấu hình quản trị viên để đặt đường dẫn của tệp thành đường dẫn mặc định là tệp đi kèm với mô-đun. Hơn nữa, một người có thể tải lên tệp của riêng họ và nó sẽ chuyển sang phát tệp đó khi điều đó xảy ra. Vấn đề là, mô-đun trên bản cài đặt mới không làm gì cả, khi tôi muốn nó có âm thanh mặc định được thiết lập để phát ngay sau khi cài đặt. Tôi đã thử làm điều đó với tệp settings.yml, tuy nhiên, cố gắng truy cập dữ liệu đó sẽ trả về giá trị rỗng cho đến khi tôi vào cấu hình quản trị viên và đặt nó thành mặc định hoặc tải lên tệp của riêng tôi.

Dưới đây là một cái nhìn tại các tập tin:

MYMODULE.settings.yml

pathToSound: '/assets/sound.mp3'

MYMODULE.schema.yml

MYMODULE.settings:
  gõ: config_object
  nhãn: 'Cài đặt MYMODULE'
  lập bản đồ:
    con đườngToSound:
      loại: chuỗi
      nhãn: 'Đường dẫn đến âm thanh'

MYMODULE.module

<?php

sử dụng Drupal\Core\Form\FormStateInterface;

hàm MYMODULE_page_attachments(mảng &$attachments) {
  $attachments['#attached']['library'][] = 'MYMODULE/MYMODULE';
  $attachments['#attached']['drupalSettings']['MYMODULE'] = [
  'pathToSound' => \Drupal::config('MYMODULE.settings')->get('pathToSound'),
  ];
}

MYMODULE.js

/**
 * @tập tin
 */
(hàm ($, Drupal) {
  'Sử dụng nghiêm ngặt';

  Drupal.behaviors.MYMODULE = {
    /**
     * Hành vi đính kèm Drupal.
     */

    đính kèm: chức năng (bối cảnh, cài đặt) {
      // Kích hoạt khi xóa bộ đệm để phát âm thanh.
      $('body', context).once('MYMODULE').each(function () {
        console.log(settings.MYMODULE.pathToSound);
        var sound = document.createElement('audio');
        sound.setAttribute('src', settings.MYMODULE.pathToSound);
        sound.play();
      });
    },
  };
  })(jQuery, Drupal, drupalSettings, một lần);

Tôi đã cố gắng loại trừ càng nhiều mã không liên quan càng tốt. Dù sao, cũng có một biểu mẫu chỉnh sửa "pathToSound" MYMODULE.settings khi mô-đun được định cấu hình trong menu quản trị. Cuối cùng, có tệp JS phát âm thanh. Như tôi đã nói, nó hoạt động sau khi được định cấu hình trong menu quản trị, nhưng không hoạt động trước đó. Tôi đang tự hỏi trước khi nó được định cấu hình, pathToSound trả về null mặc dù nó được đặt trong MYMODULE.settings. Bất kỳ ý tưởng sẽ được đánh giá rất cao, cảm ơn!

CHỈNH SỬA: Đã điều chỉnh mã theo đề xuất, vẫn không hoạt động. Cũng đã thêm JS đang chạy nhật ký bảng điều khiển đang trả về giá trị rỗng.

4uk4 avatar
lá cờ cn
Sau khi bạn đã định cấu hình mô-đun trong menu quản trị, bạn có thể xuất cấu hình và sử dụng nó làm mẫu cho cấu hình mặc định của mô-đun. Tôi nghĩ vấn đề là tệp yaml lưu trữ giá trị ở cấp độ thứ hai trong khi bạn truy xuất giá trị từ cấp độ đầu tiên.
lá cờ ru
Bạn đã đặt tệp settings.yml vào thư mục con `config/install` của mô-đun chưa?
apaderno avatar
lá cờ us
Với đối tượng cấu hình đó, mã sẽ gọi `\Drupal::config('myModule.settings')->get('path.pathToSound')` để nhận giá trị *pathToSound*. Tuy nhiên, lược đồ sẽ không khớp với đối tượng cấu hình; điều đó cũng cần được thay đổi. Ngoài ra, hãy kiểm tra xem tệp .settings.yml có nằm trong đúng thư mục không, như @Hudri đã đề xuất.
Joseph avatar
lá cờ cn
settings.yml nằm trong đúng thư mục và tôi đã thử thay đổi mã và tệp lược đồ như @apaderno gợi ý nhưng không có kết quả. Làm cách nào để xuất cấu hình sau khi định cấu hình mô-đun như 4uk4 gợi ý?
apaderno avatar
lá cờ us
Sau khi mô-đun được cài đặt, việc thay đổi tệp cấu hình hoặc tệp lược đồ không giúp được gì. Mô-đun phải được gỡ cài đặt trước; sau đó, bạn có thể thay đổi các tệp đó.
Điểm:2
lá cờ us

Lược đồ cấu hình phải khớp với tệp cấu hình. Ví dụ, những cái sau phù hợp.

myModule.settings.yml

pathToSound: '/assets/sound.mp3'

myModule.schema.yml

tuôn ra.settings:
  gõ: config_object
  nhãn: 'Cài đặt tuôn ra'
  lập bản đồ:
    con đườngToSound:
      loại: chuỗi
      nhãn: 'Đường dẫn đến âm thanh'

Trong trường hợp này, \Drupal::config('myModule.settings')->get('pathToSound') sẽ trả lại pathToSound giá trị.

Đối với tệp cấu hình chứa các dòng sau, lược đồ đó sẽ không hoạt động.

con đường:
  pathToSound: '/assets/sound.mp3'

Lược đồ chính xác sẽ là lược đồ sau.

tuôn ra.settings:
  gõ: config_object
  nhãn: 'Cài đặt tuôn ra'
  lập bản đồ:
    con đường:
      loại: lập bản đồ
      nhãn: 'Cài đặt đường dẫn'
      lập bản đồ:
        con đườngToSound:
          loại: chuỗi
          nhãn: 'Đường dẫn đến âm thanh'

Trong trường hợp này, \Drupal::config('myModule.settings')->get('path.pathToSound') sẽ trả lại pathToSound giá trị.

Như lưu ý phụ, việc thay đổi lược đồ cấu hình hoặc tệp cấu hình sau khi mô-đun được cài đặt không giúp được gì. Drupal đã tải các giá trị mặc định từ tệp cấu hình và nó sẽ vẫn sử dụng lược đồ cấu hình trước đó.
Để Drupal thông báo cả hai tệp đã được thay đổi, trước tiên phải gỡ cài đặt mô-đun, các tệp đã thay đổi và cài đặt lại mô-đun.

Joseph avatar
lá cờ cn
Cảm ơn. Đã cập nhật lại để hiển thị các tệp cài đặt và lược đồ hiện tại. Vẫn không hoạt động nhưng phải giống như những gì bạn đề xuất
Joseph avatar
lá cờ cn
Mã này thực sự hoạt động, trước đây nó không hoạt động do sự cố bên ngoài.

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