/** * Registers the fieldset in the Service container. * * The FieldSet is registered as 'rollerworks_search.fieldset.[FieldSetName]'. * * @param FieldSet $fieldSet */ public function register(FieldSet $fieldSet) { $fieldSetDef = new Definition('Rollerworks\\Component\\Search\\FieldSet'); $fieldSetDef->addArgument($fieldSet->getName()); $fieldSetDef->addTag('rollerworks_search.fieldset', ['name' => $fieldSet->getName()]); foreach ($fieldSet->all() as $name => $field) { $fieldDef = new Definition(); if (!empty($field['model_class'])) { $this->setFactory($fieldDef, 'rollerworks_search.factory', 'createFieldForProperty'); $fieldDef->addArgument($field['model_class']); $fieldDef->addArgument($field['model_property']); } else { $this->setFactory($fieldDef, 'rollerworks_search.factory', 'createField'); } $fieldDef->addArgument($name); $fieldDef->addArgument($field['type']); $fieldDef->addArgument($field['options']); $fieldDef->addArgument($field['required']); $fieldSetDef->addMethodCall('set', [$name, $fieldDef]); } $this->container->setDefinition(sprintf('rollerworks_search.fieldset.%s', $fieldSet->getName()), $fieldSetDef); }
/** * Returns the configured FieldSet object. * * @return FieldSet */ public function getFieldSet() { $fieldSet = new FieldSet($this->name); foreach ($this->fields as $name => $field) { $fieldSet->set($name, $field['type'], $field['class'], $field['property'], false, $field['options']); } return $fieldSet; }