Điểm:0

Làm cách nào để lập trình thêm Đoạn vào Đoạn khác?

lá cờ in

Tôi có một nút (ví dụ: "công ty") kinh doanh có trường tham chiếu đoạn văn (giả sử "ngành" kinh doanh có nhiều trường). Đoạn này có trong các trường của nó tham chiếu đến một đoạn khác (giả sử "nhân viên" có nhiều trường, một trong số này là tham chiếu đến thuật ngữ phân loại). trong một hook_form_submit(), với biểu mẫu $FormStateInterface $form_state làm tham số, tôi cần liên kết theo chương trình nhiều đoạn nhân viên với một đoạn ngành.

...
$node = Nút::load($id);
$sector = Đoạn::load($node->get('field_sector')->target_id);

/**
 * Danh sách các thuật ngữ phân loại được tải ở nơi khác.
 * Tôi đã thêm phần tử tùy chỉnh vào phần chọn với nhân viên "_all"
 * để liên kết theo chương trình tất cả nhân viên với $sector.
 * 
 * Mảng @var $employees
 */
foreach ($employees as $employee) {
    $paragraph = Đoạn::tạo([
        'loại' => 'nhân viên',
    ]);
    $paragraph->set('field_name', $employee->get('field_name')->value);
    $paragraph->set('field_age', $employee->get('field_age')->value);
    ...
    $paragraph->save();

    $sector->set('field_employee', $paragraph); // ở đây tôi không biết cách thêm vào sector
    $sector->save();
}

Tôi đã cố gắng liên kết từng $employee với $sector nhưng với $sector->set('field_employee', $paragraph); cú pháp hoặc với $sector->appendItem($paragraph), hoạt động cho các nút, nó không hoạt động.

Có cách nào để lập trình thêm đoạn này vào đoạn khác không?

Trực quan hóa câu hỏi, trong hình bên dưới, khi tôi lưu thực thể với tùy chọn tùy chỉnh "Tất cả nhân viên" (_tất cả các) được chọn, tôi muốn đính kèm tất cả 4 nhân viên trong đoạn văn được liên kết với đoạn "một khu vực được chọn" (xóa _tất cả các).

Cảm ơn trước.

CHỈNH SỬA 1

Tôi đã thấy câu trả lời gợi ý Lập trình thêm nhiều đoạn vào trường tham chiếu thực thể trên nút nhưng nó giải quyết cách đính kèm Đoạn văn vào nút $, không phải là một Đoạn đến một Đoạn của nút $.

Tôi cũng đã thử cái này:

$employee->setParentEntity($sector, 'field_of_reference');
$employee->save();

nhưng vẫn không nối thêm nhân viên $ đến ngành $.

CHỈNH SỬA 2

Tôi đã cố gắng làm theo các bài đăng được đề xuất nhưng tôi không thể tìm ra cách điều chỉnh mã đó bên trong một hook_form_submit().

Dù sao cũng cảm ơn tất cả, tôi nghĩ đó là một cấu trúc tồi trên mã của tôi.

Đây là biểu mẫu thực thể với các đoạn văn bên trong

Lambic avatar
lá cờ ph
Bạn đã thử $sector->field_employee[] = $paragraph chưa?
lá cờ ru
Điều này có trả lời câu hỏi của bạn không? [Nối nhiều đoạn văn vào trường tham chiếu thực thể trên nút theo chương trình](https://drupal.stackexchange.com/questions/236544/programmatically-append-multiple-paragraphs-to-entity-reference-field-on-node)
lá cờ ru
Bạn đã thử KHÔNG lưu thực thể con, chỉ lưu thực thể mẹ chưa?
leymannx avatar
lá cờ ne
Điều này có trả lời câu hỏi của bạn không? [Tạo các đoạn lồng nhau theo chương trình](https://drupal.stackexchange.com/questions/292832/create-nested-paragraphs-programmatically)
lá cờ in
Tôi sẽ cố gắng theo dõi bài đăng này. Có thể bạn đúng, đó là sự cố liên quan đến thực thể để nối thêm đoạn văn. Cảm ơn tất cả.
Điểm:1
lá cờ cn

Các vấn đề bắt đầu với cách bạn tải đoạn văn. Bạn không thể tải nó như một thực thể độc lập:

$sector = Đoạn::load($node->get('field_sector')->target_id);

Thay vào đó hãy tải nó qua trường tham chiếu:

$sector = $node->get('field_sector')->thực thể;

Sau đó, bạn có thể thêm các đoạn mới tạo mà không cần lưu, cũng như các đoạn lồng nhau và khi sẵn sàng, bạn có thể lưu thực thể gốc.

Nhìn thấy Tạo các đoạn lồng nhau theo chương trì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.