public function render()
{
if ($this->isObjectAccessorMode()) {
$formObjectName = $this->viewHelperVariableContainer->get(FormViewHelper::class, 'formObjectName');
if (!empty($formObjectName)) {
$propertySegments = explode('.', $this->arguments['property']);
$propertyPath = '';
foreach ($propertySegments as $segment) {
$propertyPath .= '[' . $segment . ']';
}
$name = $formObjectName . $propertyPath;
} else {
$name = $this->arguments['property'];
}
} else {
$name = $this->arguments['name'];
}
if (null === $name || '' === $name) {
return '';
}
if (!$this->viewHelperVariableContainer->exists(FormViewHelper::class, 'fieldNamePrefix')) {
return $name;
}
$fieldNamePrefix = (string) $this->viewHelperVariableContainer->get(FormViewHelper::class, 'fieldNamePrefix');
if ('' === $fieldNamePrefix) {
return $name;
}
$fieldNameSegments = explode('[', $name, 2);
$name = $fieldNamePrefix . '[' . $fieldNameSegments[0] . ']';
if (1 < count($fieldNameSegments)) {
$name .= '[' . $fieldNameSegments[1];
}
if ($this->viewHelperVariableContainer->exists(FormViewHelper::class, 'formFieldNames')) {
$formFieldNames = $this->viewHelperVariableContainer->get(FormViewHelper::class, 'formFieldNames');
} else {
$formFieldNames = [];
}
$formFieldNames[] = $name;
$this->viewHelperVariableContainer->addOrUpdate(FormViewHelper::class, 'formFieldNames', $formFieldNames);
return $name;
}