setName($fieldName); $type = isset($fieldConfigs['type']) ? $fieldConfigs['type'] : false; $this->setType($type); $label = isset($fieldConfigs['label']) ? $fieldConfigs['label'] : false; $this->setLabel($label); $checkboxlabel = isset($fieldConfigs['checkboxlabel']) ? $fieldConfigs['checkboxlabel'] : false; $this->setCheckboxLabel($checkboxlabel); $options = isset($fieldConfigs['options']) ? $fieldConfigs['options'] : array(); $this->setOptions($options); $this->setAttributes($fieldConfigs); $this->setAttributeValues($fieldConfigs); $this->setHelpers($fieldConfigs); } private function setName($name) { $this->name = $name; } public function getName() { return $this->name; } private function setType($type) { if(in_array($type, $this->types)) { $this->type = $type; } } public function getType() { return $this->type; } public function setLabel($label) { $this->label = $label; } public function getLabel() { return $this->label; } public function setCheckboxLabel($label) { $this->checkboxLabel = $label; } public function getCheckboxLabel() { return $this->checkboxLabel; } public function setContent($content) { $this->content = $content; } public function getContent() { return $this->content; } private function setOptions(array $options) { foreach($options as $key => $value) { $this->options[$key] = $value; } } public function getOptions() { if(isset($this->options)) { return $this->options; } return false; } private function setAttributes($fieldConfigs) { foreach($fieldConfigs as $key => $value) { if(is_string($key) && in_array($key, $this->attr)) { $this->attributes[$key] = $value; } } } /* get all attributes of the field and return them as a string. For usage in templates */ public function getAttributes() { $string = false; foreach($this->attributes as $key => $attribute) { $string .= ' ' . $key; } return $string; } /* set a single attribute. Used e.g. in controller to change the value */ public function setAttribute($key, $value) { $this->attributes[$key] = $value; } public function unsetAttribute($key) { unset($this->attributes[$key]); } /* get a single attribute, if it is defined. For usage in templates like getAttribute('required') */ public function getAttribute($key) { if(isset($this->attributes[$key])) { return $this->attributes[$key]; } return false; } private function setAttributeValues($fieldConfigs) { foreach($fieldConfigs as $key => $value) { if(is_string($key) && in_array($key, $this->attrValues)) { $this->attributeValues[$key] = $value; } } } /* get all attributes as string. For usage in template */ public function getAttributeValues() { $string = false; foreach($this->attributeValues as $key => $attribute) { $string .= ' ' . $key . '="' . $attribute . '"'; } return $string; } public function setAttributeValue($key, $value) { /* pretty dirty, but you should not add a value for a simple checkbox */ if($key == 'value' && $this->type == 'checkbox') { return; } $this->attributeValues[$key] = $value; } public function getAttributeValue($key) { if(isset($this->attributeValues[$key])) { return $this->attributeValues[$key]; } return false; } public function setHelpers($fieldConfigs) { foreach($fieldConfigs as $key => $config) { if(is_string($key) && in_array($key, $this->helpers)) { $this->$key = $config; } } } public function getHelper($helperName) { if(isset($this->$helperName)) { return $this->$helperName; } return false; } }