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());
 }