nortmas
10/31/2017 - 6:03 AM

Overriding a route controller

<?php
/**
 * @file
 * Contains \Drupal\example_module\Routing\RouteSubscriber.
 */
 
// THIS FILE BELONGS AT /example_module/src/Routing/RouteSubscriber.php
namespace Drupal\example_module\Routing;
use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;
/**
 * Listens to the dynamic route events.
 */
class RouteSubscriber extends RouteSubscriberBase {
  /**
   * {@inheritdoc}
   */
  public function alterRoutes(RouteCollection $collection) {
    // Replace "some.route.name" below with the actual route you want to override.
    if ($route = $collection->get('some.route.name')) {
      $route->setDefaults(array(
        '_controller' => '\Drupal\example_module\Controller\ExampleModuleController::content',
      ));
    }
  }
}
<?php
/**
 * @file
 * Contains \Drupal\example_module\Controller\ExampleModuleController.
 */
 
// THIS FILE BELONGS AT /example_module/src/Controller/ExampleModuleController.php

namespace Drupal\example_module\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
 * An example controller.
 */
class ExampleModuleController extends ControllerBase {

  /**
   * {@inheritdoc}
   */
  public function content() {
    $build = array(
      '#type' => 'markup',
      '#markup' => t('Hello World!'),
    );
    return $build;
  }
}
services:
  example_module.route_subscriber:
    class: Drupal\example_module\Routing\RouteSubscriber
    tags:
      - { name: event_subscriber }