"$node
" poate varia puțin în funcție de context, dar iată câteva modalități de setare $node
:
$routeName = \Drupal::routeMatch()->getRouteName();
$nod = NULL;
// $variabile['nod'].
if (isset($variabile['nod'])) {
$nod = $variabile['nod'];
dacă (este_numeric($variabile['nodul'])) {
$nod = \Drupal::entityTypeManager()->getStorage('nod')->load($variables['node']);
}
}
// $variabile['rând'].
if (isset($variabile['row']) && !empty($variables['row']->nid)) {
$nod = \Drupal::entityTypeManager()->getStorage('nod')->load($variables['row']->nid);
}
// $routeName === 'entity.node.canonical'.
if ($routeName === 'entity.node.canonical') {
$nod = \Drupal::routeMatch()->getParameter('nod');
}
// $routeName === 'entity.node.revision'.
if ($routeName === 'entity.node.revision') {
$revisionId = \Drupal::routeMatch()->getParameter('node_revision');
$nod = nod_revision_load($revisionId);
}
// $routeName === 'entity.node.preview'.
if ($routeName === 'entity.node.preview') {
$node = \Drupal::routeMatch()->getParameter('node_preview');
}
dacă ($nod) {
// rulați codul...
}
Mai exact, se pare că ești după:
// Obține numele rutei.
$routeName = \Drupal::routeMatch()->getRouteName();
// Verificați dacă ruta este revizuirea nodului.
if ($routeName === 'entity.node.revision') {
$revisionId = \Drupal::routeMatch()->getParameter('node_revision');
$nod = nod_revision_load($revisionId);
}
Acest lucru va încărca complet obiectul nod și ->getType()
ar trebui să funcționeze fără eroare.