public function testFragmentsOverride() { $negotiator = new PjaxResponseNegotiator(array('alpha' => function () { return 'alpha response'; }, 'beta' => function () { return 'beta response'; })); $request = new HTTPRequest('GET', '/'); $request->addHeader('X-Pjax', 'alpha'); $request->addHeader('Accept', 'text/json'); $response = $negotiator->setFragmentOverride(array('beta'))->respond($request); $json = json_decode($response->getBody()); $this->assertFalse(isset($json->alpha)); $this->assertObjectHasAttribute('beta', $json); }
/** * Generate a response object for a form validation error * * @param Form $form The source form * @param ValidationException $e The validation error message * @return HTTPResponse * @throws HTTPResponse_Exception */ protected function generateValidationResponse($form, $e) { $controller = $this->getToplevelController(); $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()) { $controller->getRequest()->addHeader('X-Pjax', 'CurrentForm'); } return $responseNegotiator->respond($controller->getRequest()); }