for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace SilverStripe\Forms\GridField;
use SilverStripe\Control\HTTP;
use SilverStripe\Control\HTTPRequest;
/**
* Creates a unique key for the gridfield, and uses that to write to and retrieve
* its state from the request
*/
class GridFieldStateManager implements GridFieldStateManagerInterface
{
* @param GridField $gridField
* @return string
public function getStateKey(GridField $gridField): string
$i = 0;
$form = $gridField->getForm();
if ($form) {
$form
SilverStripe\Forms\Form
true
$controller = $form->getController();
while ($controller instanceof GridFieldDetailForm_ItemRequest) {
$controller = $controller->getController();
$i++;
}
return sprintf('%s-%s-%s', 'gridState', $gridField->getName(), $i);
* @param string $url
public function addStateToURL(GridField $gridField, string $url): string
$key = $this->getStateKey($gridField);
$value = $gridField->getState(false)->Value();
return HTTP::setGetVar($key, $value, $url);
* @param HTTPRequest $request
* @return string|null
public function getStateFromRequest(GridField $gridField, HTTPRequest $request): ?string
return $request->requestVar($this->getStateKey($gridField));