mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
40 lines
1.0 KiB
PHP
40 lines
1.0 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Deals with special form handling in CMS, mainly around {@link PjaxResponseNegotiator}
|
||
|
*/
|
||
|
class CMSForm extends Form {
|
||
|
|
||
|
/**
|
||
|
* Route validation error responses through response negotiator,
|
||
|
* so they return the correct markup as expected by the requesting client.
|
||
|
*/
|
||
|
protected function getValidationErrorResponse() {
|
||
|
$request = $this->getRequest();
|
||
|
$negotiator = $this->getResponseNegotiator();
|
||
|
if($request->isAjax() && $negotiator) {
|
||
|
$negotiator->setResponse(new SS_HTTPResponse($this));
|
||
|
return $negotiator->respond($request);
|
||
|
} else {
|
||
|
return parent::getValidationErrorResponse();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the response negotiator
|
||
|
* @param ResponseNegotiator $negotiator The response negotiator to use
|
||
|
* @return Form The current form
|
||
|
*/
|
||
|
public function setResponseNegotiator($negotiator) {
|
||
|
$this->responseNegotiator = $negotiator;
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets the current response negotiator
|
||
|
* @return ResponseNegotiator|null
|
||
|
*/
|
||
|
public function getResponseNegotiator() {
|
||
|
return $this->responseNegotiator;
|
||
|
}
|
||
|
|
||
|
}
|