Điểm:0

Hành động đơn giản tùy chỉnh sau khi cập nhật một nút

lá cờ cn

Tôi đang cố gắng tạo một cách đơn giản để thực hiện một số hành động nhất định trên cơ sở dữ liệu mỗi khi tôi cập nhật một nút.

Tôi đã xem xét mô-đun Hành động của Drupal, tuy nhiên tôi không thể tìm thấy bất kỳ sách hướng dẫn hay nào giải thích cách sử dụng nó.Các mô-đun ECA hoạt động như một cơ chế để khởi chạy Hành động của tôi nhưng tôi không thể thực hiện Hành động của mình và tôi không biết cách tiếp tục.

Tôi hiện đang tạo mô-đun của riêng mình sẽ chứa các hành động của tôi. Lớp sau đây là lớp hành động của tôi.

<?php

không gian tên Drupal\my_custom_actions\Plugin\Action;

sử dụng Drupal\Core\Action\ActionBase;
sử dụng Drupal\Core\Session\AccountInterface;

/**
 * tạo hành động tùy chỉnh
 *
 * @Hoạt động(
 * id = "nút_hành động",
 * nhãn = @Translation("DataBase Action"),
 * gõ = "nút"
 * )
 */
lớp DBAction mở rộng ActionBase {

    /**
     * {@inheritdoc}
     */
    hàm công khai thực thi($node = NULL) {
        nếu ($nút) {
            // TODO: thủ tục thực thi trong cơ sở dữ liệu
            \Drupal::messenger()->addStatus('Quá trình thực thi ổn, và chúng ta có nút');
        }
    }

    /**
     * {@inheritdoc}
     */
    truy cập chức năng công cộng($object, AccountInterface $account = NULL, $return_as_object = FALSE) {
        /** @var \Drupal\node\NodeInterface $object */
        // VIỆC CẦN LÀM: viết quyền của bạn ở đây
        $result = $object->access('update', $account, TRUE);
        trả về $return_as_object? $result : $result->isAllowed();
    }

}

Tệp config/schema/module_test.schema.yml như thế này:

hành động.configuration.module_test:
  gõ: nút_hành động
  nhãn: 'Hành động cơ sở dữ liệu'

config/install/system.action.node_action.yml

mã ngôn ngữ: en
trạng thái: đúng
phụ thuộc:
  mô-đun:
    - nút
id: nút_hành động
nhãn: 'Xuất nội dung'
loại: nút
plugin: node_action
cấu hình: {  }

Tuy nhiên, sau khi cập nhật một nút, có hai điều xảy ra:

  • Biến $node của phương thức thực thi luôn có giá trị null. Không nhập vào nếu.
  • Biến $object của phương thức truy cập luôn có giá trị null. Đưa ra lỗi trong $result = $object->access('update', $account, TRUE);

Tôi không biết nếu các hành động chỉ hoạt động cho Hoạt động hàng loạt.Nhưng mục tiêu của tôi là chỉ thực hiện một hành động mỗi khi tôi cập nhật một nút. Tôi có đang đi đúng hướng khi sử dụng Hành động hay không? Tài liệu Drupal có vẻ không trực quan lắm đối với tôi.

Cảm ơn!

Kevin avatar
lá cờ in
Điều này có trả lời câu hỏi của bạn không? [Làm cách nào để tạo hành động đơn giản tùy chỉnh của riêng tôi trong D8?](https://drupal.stackexchange.com/questions/230742/how-to-create-my-own-custom-simple-action-in-d8)

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