public function AnalyticsController::ajaxOperation in Analytics 8
Calls a method on a view and reloads the listing page.
Parameters
\Drupal\analytics\Entity\AnalyticsServiceInterface $analytics_service: The analytics service being acted on.
string $op: The operation to perform, e.g., 'enable' or 'disable'.
\Symfony\Component\HttpFoundation\Request $request: The current request.
Return value
\Drupal\Core\Ajax\AjaxResponse|\Symfony\Component\HttpFoundation\RedirectResponse Either returns a rebuilt listing page as an AJAX response, or redirects back to the listing page.
1 string reference to 'AnalyticsController::ajaxOperation'
File
- src/Controller/ AnalyticsController.php, line 30 
Class
- AnalyticsController
- Returns responses for Views UI routes.
Namespace
Drupal\analytics\ControllerCode
public function ajaxOperation(AnalyticsServiceInterface $analytics_service, $op, Request $request) {
  // Perform the operation.
  $analytics_service
    ->{$op}()
    ->save();
  // Display a message and log the action.
  if ($op === 'enable') {
    $this
      ->messenger()
      ->addMessage($this
      ->t('Enabled analytics service @label.', [
      '@label' => $analytics_service
        ->label(),
    ]));
    $this
      ->getLogger('analytics')
      ->info('Enabled analytics service @label.', [
      '@label' => $analytics_service
        ->label(),
    ]);
  }
  elseif ($op === 'disable') {
    $this
      ->messenger()
      ->addMessage($this
      ->t('Disabled analytics service @label.', [
      '@label' => $analytics_service
        ->label(),
    ]));
    $this
      ->getLogger('analytics')
      ->info('Disabled analytics service @label.', [
      '@label' => $analytics_service
        ->label(),
    ]);
  }
  // If the request is via AJAX, return the rendered list as JSON.
  if ($request->request
    ->get('js')) {
    $list = $this
      ->entityTypeManager()
      ->getListBuilder('analytics_service')
      ->render();
    $response = new AjaxResponse();
    $response
      ->addCommand(new ReplaceCommand('#analytics-entity-list', $list));
    return $response;
  }
  // Otherwise, redirect back to the page.
  return $this
    ->redirect('entity.analytics_service.collection');
}