Điểm:0

Error when instantiating custom field in custom module

lá cờ nl

I apologize if the answer to this is obvious, but I am newly-embarked on porting a number of complex custom Drupal 7 modules to Drupal 9. I am using Drupal version 9.3.6, PHP version 7.4.28, mysql, apache2. I have created a custom field as follows, which on install goes without errors and appears in the field list report:

langcode: en
status: true
dependencies:
  module:
    - user
  enforced:
    module:
      - test_module
id: user.field_test
field_name: field_test
entity_type: user
type: string_long
settings:
  case_sensitive: false
module: core
locked: false
cardinality: 1
translatable: true
indexes: {  }
persist_with_no_fields: false
custom_storage: false

But when I try to instantiate it, either with field.field.user.user.field_test.yml or manually through the UI, I get the following error stack:

 [warning] A non-numeric value encountered TypedConfigManager.php:189
 [error]  Error: Unsupported operand types in Drupal\Core\Config\TypedConfigManager->getDefinitionWithReplacements() (line 189 of /var/www/test_site/web/core/lib/Drupal/Core/Config/TypedConfigManager.php) #0 /var/www/test_site/web/core/lib/Drupal/Core/Config/TypedConfigManager.php(105): Drupal\Core\Config\TypedConfigManager->getDefinitionWithReplacements()

(Sorry, I had to delete the remainder of the stack dump to avoid getting flagged as spam!)

This is the part of TypedConfigManager as follows:

    // Add type and default definition class.
    $definition += [
      'definition_class' => '\Drupal\Core\TypedData\DataDefinition', // Here is line 189
      'type' => $type,
      'unwrap_for_canonical_representation' => TRUE,
    ];
    return $definition;

I am at a loss here. If I create the field storage through the admin interface and instantiate also through the admin interface, everything works fine. I export those definitions through the single export interface, and then I get the failure.

Thank you in advance for any insight!

Update: @Jaypan, here is the code for the field.field:

langcode: en
status: true
dependencies:
  config:
    - field.storage.user.field_test
  module:
    - user
  enforced:
    module:
      - test_module
id: user.user.field_test
field_name: field_test
entity_type: user
bundle: user
label: 'Test field'
description: ''
required: false
translatable: false
default_value: {  }
default_value_callback: ''
settings: {  }
field_type: string_long
Jaypan avatar
lá cờ de
Tôi tin rằng các trường có hai bộ cấu hình, một cho trường trên thực thể và một cho bộ lưu trữ. Bạn chỉ liệt kê một bộ cấu hình - có thể bạn đang thiếu bộ cấu hình kia. Một cái gì đó để xem xét.
Jennifer avatar
lá cờ nl
Cảm ơn bạn, @Jaypan, nhưng tôi có cả hai. Như đã đề cập, lỗi xảy ra ngay cả khi tôi khởi tạo thủ công. Nhưng để hoàn thiện, tôi đã bao gồm mã cho trường.field ở trên.
Điểm:0
lá cờ nl

Tôi đã tìm ra vấn đề ở đâu. Thực tế là việc khởi tạo các trường (cả theo cách thủ công và theo chương trình) đã gây ra lỗi không liên quan gì đến nó và tôi vẫn không hiểu chính xác tại sao, nhưng đây là những gì tôi học được bằng cách xóa từng tệp khỏi mô-đun: a chế độ xem mà tôi đã tạo thủ công và xuất cho mô-đun của mình rõ ràng đã gây ra một số sự cố trong hệ thống cấu hình. Khi tôi xóa tệp yml cho chế độ xem khỏi cấu hình/lược đồ, mọi thứ đều được kích hoạt tốt. Đi hình.

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