Closed (fixed)
Project:
Subentity
Version:
3.0.x-dev
Component:
Code
Priority:
Normal
Category:
Bug report
Assigned:
Unassigned
Reporter:
Created:
5 Jun 2026 at 09:15 UTC
Updated:
12 Jun 2026 at 14:40 UTC
Jump to comment: Most recent
In subentity_theme_suggestions_alter(), $view_mode is only assigned inside the first if block but is read inside a second, independent if block. If $variables['elements']['#view_mode'] is empty or absent, the variable is never initialized and PHP 8 emits an E_WARNING (Undefined variable $view_mode).
// $view_mode is only set here...
if (!empty($variables['elements']['#view_mode'])) {
$view_mode = $variables['elements']['#view_mode'];
$suggestions[] = $hook . '__' . $view_mode;
}
// ...but read here, in a completely independent if block.
if ($subentity->bundle() !== 'subentity') {
$bundle = $subentity->bundle();
$suggestions[] = $hook . '__' . $bundle;
if (!empty($view_mode)) { // E_WARNING if the first if was not entered
$suggestions[] = $hook . '__' . $bundle . '__' . $view_mode;
}
}
Initialize $view_mode to NULL before both blocks so the second check is always against a defined value:
$view_mode = NULL;
if (!empty($variables['elements']['#view_mode'])) {
$view_mode = $variables['elements']['#view_mode'];
$suggestions[] = $hook . '__' . $view_mode;
}
if ($subentity->bundle() !== 'subentity') {
$bundle = $subentity->bundle();
$suggestions[] = $hook . '__' . $bundle;
if (!empty($view_mode)) {
$suggestions[] = $hook . '__' . $bundle . '__' . $view_mode;
}
}
subentity.module.subentity_theme_suggestions_alter() does not produce warnings when #view_mode is absent.Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #4
macsim commentedComment #6
macsim commentedComment #7
macsim commented