"nút $
" có thể thay đổi một chút theo ngữ cảnh, nhưng đây là một số cách để thiết lập nút $
:
$routeName = \Drupal::routeMatch()->getRouteName();
nút $ = NULL;
// $variables['node'].
if (isset($variables['node'])) {
$node = $variables['node'];
if (is_numeric($variables['node'])) {
$node = \Drupal::entityTypeManager()->getStorage('node')->load($variables['node']);
}
}
// $variables['row'].
if (isset($variables['row']) && !empty($variables['row']->nid)) {
$node = \Drupal::entityTypeManager()->getStorage('node')->load($variables['row']->nid);
}
// $routeName === 'entity.node.canonical'.
if ($routeName === 'entity.node.canonical') {
$node = \Drupal::routeMatch()->getParameter('node');
}
// $routeName === 'entity.node.revision'.
if ($routeName === 'entity.node.revision') {
$revisionId = \Drupal::routeMatch()->getParameter('node_revision');
$node = node_revision_load($revisionId);
}
// $routeName === 'entity.node.preview'.
if ($routeName === 'entity.node.preview') {
$node = \Drupal::routeMatch()->getParameter('node_preview');
}
nếu ($nút) {
// chạy mã của bạn...
}
Cụ thể, có vẻ như bạn đang theo đuổi:
// Lấy tên tuyến đường.
$routeName = \Drupal::routeMatch()->getRouteName();
// Kiểm tra xem tuyến đường có phải là bản sửa đổi nút không.
if ($routeName === 'entity.node.revision') {
$revisionId = \Drupal::routeMatch()->getParameter('node_revision');
$node = node_revision_load($revisionId);
}
Điều này sẽ tải đầy đủ đối tượng nút của bạn và ->getType()
nên hoạt động mà không có lỗi.