diff --git a/core/modules/views/src/Views.php b/core/modules/views/src/Views.php index 86dcdf7a9a013fe89d04c44c7c0b535bbac6b784..42ae43118a888551fd371571861baebd64448f41 100644 --- a/core/modules/views/src/Views.php +++ b/core/modules/views/src/Views.php @@ -115,14 +115,15 @@ public static function handlerManager($type) { * @param string $id * The view ID to load. * - * @return \Drupal\views\ViewExecutable - * A view executable instance, from the loaded entity. + * @return \Drupal\views\ViewExecutable|null + * A view executable instance or NULL if the view does not exist. */ public static function getView($id) { $view = \Drupal::entityTypeManager()->getStorage('view')->load($id); if ($view) { return static::executableFactory()->get($view); } + return NULL; } /** diff --git a/core/modules/views/tests/src/Unit/ViewsTest.php b/core/modules/views/tests/src/Unit/ViewsTest.php index f2db710a39aedf9eaa6476cf555e97a21d3c51ac..813c88d980a49e798057cdb347ef39673955f714 100644 --- a/core/modules/views/tests/src/Unit/ViewsTest.php +++ b/core/modules/views/tests/src/Unit/ViewsTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\views\Unit; +use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Tests\UnitTestCase; use Drupal\views\Views; @@ -72,6 +73,21 @@ public function testGetView() { $this->assertEquals(spl_object_hash($view), spl_object_hash($executable->storage)); } + /** + * Tests the getView() method against a non-existent view. + * + * @covers ::getView + */ + public function testGetNonExistentView() { + $entity_type_manager = $this->prophesize(EntityTypeManagerInterface::class); + $storage = $this->prophesize(EntityStorageInterface::class); + $storage->load('test_view_non_existent')->willReturn(NULL); + $entity_type_manager->getStorage('view')->willReturn($storage->reveal()); + $this->container->set('entity_type.manager', $entity_type_manager->reveal()); + $executable_does_not_exist = Views::getView('test_view_non_existent'); + $this->assertNull($executable_does_not_exist); + } + /** * @covers ::getApplicableViews *