Điểm:0

Làm cách nào để ẩn các trường trong màn hình quản lý khi mô-đun bố cục được cài đặt và hiển thị khi mô-đun được gỡ cài đặt theo chương trình?

lá cờ in

Trong cấu hình bên dưới, tôi muốn xóa trường nội dung khỏi Nội dung và thêm nó vào ẩn giấu như cơ thể: đúng khi tôi gỡ cài đặt mô-đun bố cục. Về cơ bản khi tôi cài đặt mô-đun bố cục, các trường trong màn hình quản lý sẽ bị tắt/ẩn và khi tôi gỡ cài đặt mô-đun, các trường sẽ được hiển thị. Làm thế nào tôi có thể đạt được điều này theo chương trình?

Mã cấu hình này là của entity_view_display.node.article.default

  uuid: eedc35e4-0592-4f1a-bdc6-47dbf60fa929    
    mã ngôn ngữ: en    
    trạng thái: đúng    
    phụ thuộc:   
      cấu hình:   
        - field.field.node.article.body 
        - field.field.node.article.comment  
        - field.field.node.article.field_image  
        - field.field.node.article.field_media  
        - field.field.node.article.field_sample_text    
        - field.field.node.article.field_tags   
        - nút.type.article 
      mô-đun:   
        - layout_builder    
        - chữ  
        - người dùng  
    third_party_settings:   
      bố cục_builder:   
        đã bật: sai  
        allow_custom: sai 
    id: nút.article.default    
    targetEntityType: nút  
    gói: bài viết 
    chế độ: mặc định   
    Nội dung:    
      thân thể: 
        gõ: text_default  
        nhãn: ở trên    
        cài đặt: { }  
        third_party_settings: { }  
        trọng lượng: 0   
        khu vực: nội dung 
    ẩn giấu: 
      nhận xét: đúng 
      trường_hình ảnh: đúng 
      trường_phương tiện: đúng 
      trường_mẫu_văn bản: đúng   
      trường_tags: đúng  
      mã ngôn ngữ: đúng    
      liên kết: đúng   
      search_api_excerpt: true
4uk4 avatar
lá cờ cn
Bạn đang tìm một hook như hook_modules_installed/uninstall hoặc setComponent /removeComponent cho chế độ hiển thị? Xem https://drupal.stackexchange.com/questions/224686/8-how-do-i-programmatically-enable-a-user-field-under-manage-form-display-and
Libbna Mathew avatar
lá cờ in
trong hook_install() tôi muốn ẩn các trường trong màn hình quản lý. Giống như khi tôi bật/cài đặt mô-đun trình tạo bố cục, các trường trong màn hình quản lý sẽ bị tắt.
4uk4 avatar
lá cờ cn
Bạn có nghĩa là mô-đun trình tạo bố cục cốt lõi? Sau đó, bạn cần cái móc mà tôi đã đề cập. hook_install() chỉ chạy cho mô-đun nơi móc được triển khai.
Libbna Mathew avatar
lá cờ in
Không không, tôi đã tạo một mô-đun bố cục tùy chỉnh. Và tôi đang làm việc trên D9. Tôi chỉ muốn nội dung được làm trống trong trường cấu hình và nội dung được đề cập ở trên trong nội dung phải được ẩn: đúng. Và chức năng này nên được thực hiện trong hook_install(). Hy vọng tôi có thể giải thích nó tốt!
Libbna Mathew avatar
lá cờ in
Tôi muốn tắt trường trong màn hình quản lý khi tôi cài đặt mô-đun tùy chỉnh của mình.
Điểm:1
lá cờ in

Tôi đã giải quyết vấn đề. Thay vì \Drupal::entityTypeManager() tôi đã sử dụng

$articleDefaultLayout = LayoutBuilderEntityViewDisplay::load(
    'nút.article.default'
);
$articleDefaultLayout->setComponent('body');
Libbna Mathew avatar
lá cờ in
@4uk4 cảm ơn sự giúp đỡ của bạn.
4uk4 avatar
lá cờ cn
Điều này không quan trọng cho dù bạn sử dụng entityTypeManager() hay tĩnh tải(). Cả hai đều có cùng một kết quả.
Libbna Mathew avatar
lá cờ in
Nhưng khi tôi sử dụng entityTypeManager(), removeComponent() đã báo lỗi. "Không tìm thấy phương pháp"
4uk4 avatar
lá cờ cn
Sau đó, có một lỗi khác nhau. BTW, ví dụ mã của bạn có nhược điểm là nó gây ra lỗi khi chưa cài đặt Trình tạo bố cục. Sẽ tốt hơn nếu tải lớp gốc hoặc tải thực thể theo id loại thực thể thông qua entityTypeManager().Sau đó, bạn luôn nhận được lớp hiện được cài đặt cho loại thực thể này.
Libbna Mathew avatar
lá cờ in
Tôi đã có quan điểm của bạn. Nhưng tại sao nó lại hiển thị lỗi này? Tôi đã làm chính xác những gì bạn đã đề cập trong mã hook_install(). Không thể tìm thấy phương thức removeComponent(). !!
Điểm:0
lá cờ cn

Để tắt trường nội dung khi bạn cài đặt mô-đun tùy chỉnh:

mymodule.install

/**
 * Triển khai hook_install().
 */
hàm mymodule_install() {
  \Drupal::entityTypeManager()
    ->getStorage('entity_view_display')
    -> tải ('node.article.default')
    ->removeComponent('cơ thể')
    -> lưu();
}

Cách kích hoạt trường, xem 8 - Làm cách nào để kích hoạt trường người dùng theo chương trình quản lý hiển thị biểu mẫu và quản lý hiển thị?

Libbna Mathew avatar
lá cờ in
Tôi gặp lỗi trong phương thức removeComponent(). Và nếu tôi muốn xóa trường bằng cách sử dụng id trường để thay vì 'nội dung', chúng ta có thể viết id trường, phải không?
Libbna Mathew avatar
lá cờ in
Tôi đang làm việc trên Drupal 9

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