public function testMultipleFragments() { $negotiator = new PjaxResponseNegotiator(array('default' => function () { return 'default response'; }, 'myfragment' => function () { return 'myfragment response'; }, 'otherfragment' => function () { return 'otherfragment response'; })); $request = new HTTPRequest('GET', '/'); $request->addHeader('X-Pjax', 'myfragment,otherfragment'); $request->addHeader('Accept', 'text/json'); $response = $negotiator->respond($request); $json = json_decode($response->getBody()); $this->assertObjectHasAttribute('myfragment', $json); $this->assertEquals('myfragment response', $json->myfragment); $this->assertObjectHasAttribute('otherfragment', $json); $this->assertEquals('otherfragment response', $json->otherfragment); }
/** * 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()); }