From 3482c98ccecc0d52e556669b230b977d7b81a45f Mon Sep 17 00:00:00 2001 From: zauberfisch Date: Wed, 13 Jul 2016 09:34:02 +0000 Subject: [PATCH] only use PjaxResponseNegotiator in GridFieldDetailForm if the Request is actually AJAX (fixes #5801) --- forms/gridfield/GridFieldDetailForm.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/forms/gridfield/GridFieldDetailForm.php b/forms/gridfield/GridFieldDetailForm.php index 5eeabcfcb..29802323e 100644 --- a/forms/gridfield/GridFieldDetailForm.php +++ b/forms/gridfield/GridFieldDetailForm.php @@ -549,18 +549,18 @@ class GridFieldDetailForm_ItemRequest extends RequestHandler { $list->add($this->record, $extraData); } catch(ValidationException $e) { $form->sessionMessage($e->getResult()->message(), 'bad', false); - $responseNegotiator = new PjaxResponseNegotiator(array( - 'CurrentForm' => function() use(&$form) { - return $form->forTemplate(); - }, - 'default' => function() use(&$controller) { - return $controller->redirectBack(); - } - )); - if($controller->getRequest()->isAjax()){ + if ($controller->getRequest()->isAjax()) { + $responseNegotiator = new PjaxResponseNegotiator(array( + 'CurrentForm' => function () use (&$form) { + return $form->forTemplate(); + }, + )); $controller->getRequest()->addHeader('X-Pjax', 'CurrentForm'); + return $responseNegotiator->respond($controller->getRequest()); } - return $responseNegotiator->respond($controller->getRequest()); + Session::set("FormInfo.{$form->FormName()}.errors", array()); + Session::set("FormInfo.{$form->FormName()}.data", $form->getData()); + return $controller->redirectBack(); } // TODO Save this item into the given relationship