diff --git a/js/fullcalendar.ajax.js b/js/fullcalendar.ajax.js index 199be41..a7fde7d 100644 --- a/js/fullcalendar.ajax.js +++ b/js/fullcalendar.ajax.js @@ -42,12 +42,12 @@ } var $submit_button = $submit.find('.form-submit'); var ajaxSettings = { - url: Drupal.url('fullcalendar/ajax/results/' + settings.view_name + '/' + settings.view_display + '/' + ajaxView.view_args), + url: Drupal.url('fullcalendar/ajax/results/' + settings.view_name + '/' + settings.view_display), base: 'main', element: $submit_button[0], event: 'fullcalendar_submit', fullcalendar: this, - submit: {dom_id: domId}, + submit: {dom_id: domId, view_args: ajaxView.view_args}, }; $submit_button.unbind('click'); diff --git a/src/Ajax/ResultsController.php b/src/Ajax/ResultsController.php index 43f3504..6cc47db 100644 --- a/src/Ajax/ResultsController.php +++ b/src/Ajax/ResultsController.php @@ -65,7 +65,15 @@ class ResultsController implements ContainerInjectionInterface { return; } - $args = array(); + $args = isset($request_all['view_args']) ? $request_all['view_args'] : NULL; + $args = isset($args) && $args !== '' ? explode('/', $args) : array(); + + // Arguments can be empty, make sure they are passed on as NULL so that + // argument validation is not triggered. + $args = array_map(function ($arg) { + return ($arg == '' ? NULL : $arg); + }, $args); + // Reuse the same DOM id so it matches that in drupalSettings. $view->dom_id = $request->request->get('dom_id'); $view->fullcalendar_ajax = TRUE;