diff --git a/flextype/core/Forms.php b/flextype/core/Forms.php
index 3dbf98bb..896ef84a 100644
--- a/flextype/core/Forms.php
+++ b/flextype/core/Forms.php
@@ -49,45 +49,64 @@ class Forms
*/
public function fetch(array $fieldset, array $values = [], Request $request, Response $response) : string
{
- $form = '';
- $form .= Form::open(null, ['id' => 'form']);
+ $form = Form::open(null, ['id' => 'form']);
$form .= $this->_csrfHiddenField();
$form .= $this->_actionHiddenField();
+
if (count($fieldset['sections']) > 0) {
+
$form .= '
';
+
+
foreach ($fieldset['sections'] as $key => $section) {
+
$form .= '
';
$form .= '
';
+
foreach ($section['fields'] as $element => $property) {
+
// Create attributes
$property['attributes'] = Arr::keyExists($property, 'attributes') ? $property['attributes'] : [];
+
// Create attribute class
$property['attributes']['class'] = Arr::keyExists($property, 'attributes.class') ? 'form-control ' . $property['attributes']['class'] : 'form-control';
+
// Create attribute size
$property['size'] = Arr::keyExists($property, 'size') ? $property['size'] : 'col-12';
+
// Create attribute value
$property['value'] = Arr::keyExists($property, 'value') ? $property['value'] : '';
+
$pos = strpos($element, '.');
+
if ($pos === false) {
$form_element_name = $element;
} else {
$form_element_name = str_replace('.', '][', "$element") . ']';
}
+
$pos = strpos($form_element_name, ']');
+
if ($pos !== false) {
$form_element_name = substr_replace($form_element_name, '', $pos, strlen(']'));
}
+
// Form value
$form_value = Arr::keyExists($values, $element) ? Arr::get($values, $element) : $property['value'];
+
// Form label
$form_label = Form::label($element, __($property['title']));
+
// Form elements
switch ($property['type']) {
// Simple text-input, for multi-line fields.
@@ -154,12 +173,12 @@ class Forms
}
$form .= '
';
}
+
$form .= Form::close();
return $form;
}
-
protected function _csrfHiddenField()
{
$field = '
';