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!