Điểm:1

Kiểm tra chức năng - Schema Incomplete Exception thiếu lược đồ

lá cờ id

Tôi đang thực hiện thử nghiệm chức năng đầu tiên của mình cho một mô-đun tùy chỉnh. Mỗi lần tôi chạy thử nghiệm chức năng, tôi gặp lỗi khi xử lý các vấn đề về lược đồ cấu hình. Tuy nhiên, tôi bối rối bởi thông báo lỗi.

Chỉ huy

mô-đun phpunit/tùy chỉnh/worx_blog

Thông báo lỗi

Lỗi lược đồ cho editor.editor.full_html với các lỗi sau:

editor.editor.full_html:settings.plugins.linkit thiếu lược đồ

Cấu hình mô-đun của tôi - Tệp cấu hình mô-đun

Nếu bạn nhìn vào tập tin, bạn có thể thấy rằng liên kết nó lối vào là có. Vì vậy, tôi không biết nó có nghĩa là gì khi nó bị thiếu.

miststudent2011 avatar
lá cờ fr
Bạn cần thêm tệp schema.yml giống như thế này https://git.drupalcode.org/sandbox/Bhanu951-3103712/-/blob/8.x-dev/testing_examples/config/schema/testing_examples.schema.yml
Điểm:1
lá cờ us

Như API cấu hình cho biết, mỗi mô-đun cần xác định lược đồ cấu hình của nó trong các tệp trong thư mục config/schema trong thư mục mô-đun cấp cao nhất. Điều đó được lõi Drupal sử dụng để xác thực tệp cấu hình và xác minh rằng nó không bị hỏng.

Ví dụ: mô-đun Sách sử dụng lược đồ sau đây cho đối tượng cấu hình của nó (lõi/mô-đun/book/config/schema/book.schema.yml).

# Lược đồ cho các tệp cấu hình của mô-đun sách.

sách.settings:
  gõ: config_object
  nhãn: 'Cài đặt sách'
  lập bản đồ:
    allow_types:
      loại: trình tự
      nhãn: 'Các loại nội dung được phép trong đề cương sách'
      sự nối tiếp:
        loại: chuỗi
        nhãn: 'Loại nội dung'
    chặn:
      loại: lập bản đồ
      nhãn: 'Chặn'
      lập bản đồ:
        dẫn đường:
          loại: lập bản đồ
          nhãn: 'Điều hướng'
          lập bản đồ:
            cách thức:
              loại: chuỗi
              nhãn: 'Chế độ'
    con_type:
      loại: chuỗi
      nhãn: 'Loại nội dung cho các trang con'

block.settings.book_navlation:
  gõ: block_settings
  nhãn: 'Khối điều hướng sách'
  lập bản đồ:
    chế độ chặn:
      loại: chuỗi
      nhãn: 'Chế độ hiển thị khối'

Điều đó khác với tệp cấu hình của nó, nằm trong lõi/mô-đun/book/config/installbook.settings.yml.

allow_types:
  - sách
chặn:
  dẫn đường:
    chế độ: 'tất cả các trang'
con_type: cuốn sách

Mã ném ngoại lệ đó được chứa trong ConfigSchemaChecker lớp, được sử dụng để triển khai một người đăng ký sự kiện được gọi khi một đối tượng cấu hình được lưu.

  chức năng công khai onConfigSave(ConfigCrudEvent $event) {
    // Chỉ xác thực cấu hình nếu trong bộ sưu tập mặc định. Khác
    // bộ sưu tập có thể có cấu hình không đầy đủ (ví dụ ngôn ngữ
    // chỉ ghi đè). Bản thân chúng không có giá trị.
    $saved_config = $event->getConfig();
    if ($saved_config->getStorage()->getCollectionName() != StorageInterface::DEFAULT_COLLECTION) {
      trở lại;
    }
    $name = $saved_config->getName();
    $data = $saved_config->get();
    $checksum = Crypt::hashBase64(serialize($data));
    if (!in_array($name, $this->exclude) && !isset($this->checked[$name . ':' . $checksum])) {
      $this->checked[$name . ':' . $checksum] = TRUE;
      $errors = $this->checkConfigSchema($this->typedManager, $name, $data);
      nếu ($lỗi === FALSE) {
        ném new SchemaIncompleteException("Không có lược đồ nào cho {$name}");
      }
      otherif (is_array($errors)) {
        $text_errors = [];
        foreach ($errors as $key => $error) {
          $text_errors[] = new FormattableMarkup('@key @error', [
            '@key' => $key,
            '@lỗi' => $lỗi,
          ]);
        }
        throw new SchemaIncompleteException("Lỗi lược đồ cho {$name} với các lỗi sau: " . implode(', ', $text_errors));
      }
    }
  }
lá cờ id
Với trường hợp này, vậy tại sao tôi chỉ nhận được một lược đồ bị thiếu trên một số mục nhập nhất định trong config/install/ymls chứ không phải trên mọi mục nhập?
apaderno avatar
lá cờ us
Bởi vì lớp [`ConfigSchemaChecker`](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Config%21Development%21ConfigSchemaChecker.php/class/ConfigSchemaChecker/9.3.x) không kiểm tra mọi mục nhập và trình xử lý sự kiện của nó chỉ được gọi khi một đối tượng cấu hình được 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.