Below is a snippet of how to render a view inside a controller. You can easily add content below or above your view this way. Trick is to render it correctly!
<?php
namespace Drupal\mymodule\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\views\Views;
/**
* Class ContestantsController.
*/
class ContestantsController extends ControllerBase {
/**
* Renders the contestants page.
*
* @return array
* The renderable array.
*/
public function render() {
$activeContestId = 100; //
$view = Views::getView('mymodule_contestants');
$view->setDisplay('block_1');
// contextual relationship filter
$view->setArguments([$activeContestId]);
$view->execute();
$rendered = $view->render();
$output = \Drupal::service('renderer')->render($rendered);
return [
['#markup' => $output]
];
}
public function title() {
return $this->t('Contestants');
}
}