Skip to main content

To provide a dynamic file, you need to make a Controller with a method like:

 public function serve(Request $request) {
    $file_str = $file_system->realpath($module_handler->getModule('my_module')->getPath()) . '/assets/js/service-worker.js';

    if (file_exists($file_str)) {

      $response = new BinaryFileResponse($file_str, 200);
      $response->headers()->set('Content-Type', 'application/javascript');
      // Allow same origin service worker.
      $response->headers()->set('Service-Worker-Allowed', '/');

      return $response;
    }

    throw new NotFoundHttpException();
  }

And then define a route for it, where the path is not existing as a static file, like:

example.serviceworker:
  path: '/serviceworker.js'serviceworker' 
  defaults: 
    _controller: '\Drupal\my_module\Controller\ExampleController::serve' 
  requirements: 
    _permission: 'access content' 

see - https://www.drupal.org/docs/drupal-apis/routing-system/introductory-drupal-8-routes-and-controllers-example.

To provide a dynamic file, you need to make a Controller with a method like:

 public function serve(Request $request) {
    $file_str = $file_system->realpath($module_handler->getModule('my_module')->getPath()) . '/assets/js/service-worker.js';

    if (file_exists($file_str)) {

      $response = new BinaryFileResponse($file_str, 200);
      $response->headers()->set('Content-Type', 'application/javascript');
      // Allow same origin service worker.
      $response->headers()->set('Service-Worker-Allowed', '/');

      return $response;
    }

    throw new NotFoundHttpException();
  }

And then define a route for it, where the path is not existing as a static file, like:

example.serviceworker:
  path: '/serviceworker.js' 
  defaults: 
    _controller: '\Drupal\my_module\Controller\ExampleController::serve' 
  requirements: 
    _permission: 'access content' 

see - https://www.drupal.org/docs/drupal-apis/routing-system/introductory-drupal-8-routes-and-controllers-example.

To provide a dynamic file, you need to make a Controller with a method like:

 public function serve(Request $request) {
    $file_str = $file_system->realpath($module_handler->getModule('my_module')->getPath()) . '/assets/js/service-worker.js';

    if (file_exists($file_str)) {

      $response = new BinaryFileResponse($file_str, 200);
      $response->headers->set('Content-Type', 'application/javascript');
      // Allow same origin service worker.
      $response->headers->set('Service-Worker-Allowed', '/');

      return $response;
    }

    throw new NotFoundHttpException();
  }

And then define a route for it, where the path is not existing as a static file, like:

example.serviceworker:
  path: '/serviceworker' 
  defaults: 
    _controller: '\Drupal\my_module\Controller\ExampleController::serve' 
  requirements: 
    _permission: 'access content' 

see - https://www.drupal.org/docs/drupal-apis/routing-system/introductory-drupal-8-routes-and-controllers-example.

Source Link
rémy
  • 5.7k
  • 16
  • 17

To provide a dynamic file, you need to make a Controller with a method like:

 public function serve(Request $request) {
    $file_str = $file_system->realpath($module_handler->getModule('my_module')->getPath()) . '/assets/js/service-worker.js';

    if (file_exists($file_str)) {

      $response = new BinaryFileResponse($file_str, 200);
      $response->headers()->set('Content-Type', 'application/javascript');
      // Allow same origin service worker.
      $response->headers()->set('Service-Worker-Allowed', '/');

      return $response;
    }

    throw new NotFoundHttpException();
  }

And then define a route for it, where the path is not existing as a static file, like:

example.serviceworker:
  path: '/serviceworker.js' 
  defaults: 
    _controller: '\Drupal\my_module\Controller\ExampleController::serve' 
  requirements: 
    _permission: 'access content' 

see - https://www.drupal.org/docs/drupal-apis/routing-system/introductory-drupal-8-routes-and-controllers-example.