Calls a method on a view and reloads the listing page.
\Drupal\views\ViewStorageInterface $view: The view being acted upon.
string $op: The operation to perform, e.g., 'enable' or 'disable'.
\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.
public function ajaxOperation(ViewStorageInterface $view, $op, Request $request) {
// Perform the operation.
$view
->{$op}()
->save();
// If the request is via AJAX, return the rendered list as JSON.
if ($request->request
->get('js')) {
$list = $this->entityManager
->getListController('view')
->render();
$response = new AjaxResponse();
$response
->addCommand(new ReplaceCommand('#views-entity-list', drupal_render($list)));
return $response;
}
// Otherwise, redirect back to the page.
// @todo Remove url() wrapper once http://drupal.org/node/1668866 is in.
return new RedirectResponse(url('admin/structure/views', array(
'absolute' => TRUE,
)));
}