Issue #2868258 by joegraduate, Lendude, Jons, dawehner, alexpott, larowlan: Missing View not helpfully reported in preRenderViewElement()
parent
79dd8321b2
commit
1ab0f4844b
|
@ -3,6 +3,7 @@
|
|||
namespace Drupal\views\Element;
|
||||
|
||||
use Drupal\Core\Render\Element\RenderElement;
|
||||
use Drupal\views\Exception\ViewRenderElementException;
|
||||
use Drupal\views\Views;
|
||||
|
||||
/**
|
||||
|
@ -41,6 +42,9 @@ class View extends RenderElement {
|
|||
|
||||
if (!isset($element['#view'])) {
|
||||
$view = Views::getView($element['#name']);
|
||||
if (!$view) {
|
||||
throw new ViewRenderElementException("Invalid View name ({$element['#name']}) given.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
$view = $element['#view'];
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\views\Exception;
|
||||
|
||||
/**
|
||||
* Defines an exception for an invalid View render element.
|
||||
*/
|
||||
class ViewRenderElementException extends \Exception {}
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Drupal\Tests\views\Kernel;
|
||||
|
||||
use Drupal\views\Exception\ViewRenderElementException;
|
||||
use Drupal\views\Views;
|
||||
|
||||
/**
|
||||
|
@ -129,4 +130,19 @@ class ViewElementTest extends ViewsKernelTestBase {
|
|||
$this->assertCount(1, $this->xpath('//form[@class="views-exposed-form"]'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that an exception is thrown when an invalid View is passed.
|
||||
*/
|
||||
public function testInvalidView() {
|
||||
$renderer = $this->container->get('renderer');
|
||||
$render_element = [
|
||||
'#type' => 'view',
|
||||
'#name' => 'invalid_view_name',
|
||||
'#embed' => FALSE,
|
||||
];
|
||||
$this->expectException(ViewRenderElementException::class);
|
||||
$this->expectExceptionMessage("Invalid View name ({$render_element['#name']}) given.");
|
||||
$renderer->renderRoot($render_element);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue