Migrating to Beta 12, some ajax functionality was not functioning as expected. The log messages reported an exception,
Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException: No route found for the specified format
Using a debugger to step through the function that throws the exception, I made guesses as to what was needed. Eventually, I stumbled on a fix.
In the .routing.yml file I changed the relevant route definition by removing the _format property as follows.
Before:
ajax.enable:
path: /ajax/optimizely
defaults:
_controller: \Drupal\optimizely\AjaxEnable::enableDisable
_title: Optimizely Administer AJAX
requirements:
_permission: administer optimizely
_format: json
After:
ajax.enable:
path: /ajax/optimizely
defaults:
_controller: \Drupal\optimizely\AjaxEnable::enableDisable
_title: Optimizely Administer AJAX
requirements:
_permission: administer optimizely
Unfortunately, searching through the Drupal and the Symfony docs, I have not found anything to help me understand why this change to the route definition makes a critical difference.
From the module's point of view, it looks as though the property is actually not needed. The client-side JavaScript that makes the request to the server sets json as the dataType. And the server-side code always instantiates a JsonResponse object to pass back.
Perhaps a reference that might help: https://www.drupal.org/node/2092643
ReplyDelete