/** * @param $filter * * @return $this|self */ public function addFilter(AbstractField $filter) : self { if (!$this->filtersForm) { $this->filtersForm = new Form(); $this->filtersForm->setMethod('GET')->setName($this->stateId ? $this->stateId : 'grid')->setAction(self::request()->getUri()->get()); $this->navbar->add($this->filtersForm); } if ($this->stateId) { $filter->setName($this->stateId . '_' . $filter->getName()); } $this->filtersForm->add($filter); $this->filtersForm->setAction(Uri::parse($this->filtersForm->getAction())->removeQuery($filter->getName())->get()); if ($filter->getLabel()) { $filter->getLabel()->addClass('sr-only'); } return $this; }
/** * @param AbstractField|Group|Fieldset $element * * @return bool */ private function getFieldValue($element) : bool { if (!($name = $element->getName())) { return false; } if (substr($name, -2) == '[]' && !$element instanceof MultipleValueInterface) { $currentName = substr($name, 0, -2); if (!isset($this->arrayNameIndex[$currentName])) { $this->arrayNameIndex[$currentName] = 0; } else { $this->arrayNameIndex[$currentName]++; } $name = $currentName . '[' . $this->arrayNameIndex[$currentName] . ']'; } if ($element instanceof File) { $userInput = self::request()->getUploadedFile($name); } else { $userInput = self::request()->getArg($name); } $userInput = $userInput != '' ? $userInput : null; list($valid, $value, $typedValue) = $this->validateValue($element, $userInput); // We set values with type cast value if valid, else type cast, else user input $elementValue = $value ?? (isset($typedValue) ? $typedValue : $userInput); if (is_array($elementValue) && !$element instanceof MultipleValueInterface) { $elementValue = null; } $element->setValue($elementValue); $this->storeValue($name, $valid, $userInput, $elementValue); return true; }