Form->input(), * - requirements: boolean, if false is passed the field is skipped * - metafields: fields that are outside of the scope of the form itself - use these to define dynamic form fields, or anything that will feed into the regular fields via JS population * - submit: The submit button itself. By default it will simply submit to the form as defined via the 'model' field */ $modelForForm = empty($data['model']) ? h(Inflector::singularize(Inflector::classify($this->request->params['controller']))) : h($data['model']); $fieldsString = ''; $simpleFieldWhitelist = array( 'default', 'type', 'options', 'placeholder', 'label', 'empty', 'rows', 'div', 'required' ); $fieldsArrayForPersistence = array(); $formCreate = $this->Form->create($modelForForm); if (!empty($data['fields'])) { foreach ($data['fields'] as $fieldData) { if (isset($fieldData['requirements']) && !$fieldData['requirements']) { continue; } if (is_array($fieldData)) { if (empty($fieldData['label'])) { $fieldData['label'] = Inflector::humanize($fieldData['field']); } if (!empty($fieldDesc[$fieldData['field']])) { $fieldData['label'] .= $this->element( 'genericElements/Form/formInfo', array( 'field' => $fieldData, 'fieldDesc' => $fieldDesc[$fieldData['field']], 'modelForForm' => $modelForForm ) ); } $params = array(); if (!empty($fieldData['class'])) { if (is_array($fieldData['class'])) { $class = implode(' ', $fieldData['class']); } else { $class = $fieldData['class']; } $params['class'] = $class; } else { $params['class'] = ''; } foreach ($simpleFieldWhitelist as $f) { if (!empty($fieldData[$f])) { $params[$f] = $fieldData[$f]; } } $temp = $this->Form->input($fieldData['field'], $params); $fieldsArrayForPersistence []= $modelForForm . Inflector::camelize($fieldData['field']); if (!empty($fieldData['hidden'])) { $temp = ''; } $fieldsString .= $temp; } else { $fieldsString .= $fieldData; } if (empty($fieldData['stayInLine'])) { $fieldsString .= '
'; } } } $metaFieldString = ''; if (!empty($data['metaFields'])) { foreach ($data['metaFields'] as $metaField) { $metaFieldString .= $metaField; } } $submitButtonData = array('model' => $modelForForm); if (!empty($data['submit'])) { $submitButtonData = array_merge($submitButtonData, $data['submit']); } if (!empty($data['ajaxSubmit'])) { $submitButtonData['ajaxSubmit'] = $ajaxSubmit; } $ajaxFlashMessage = ''; if ($ajax) { $ajaxFlashMessage = sprintf( '
%s
', $this->Flash->render() ); } $formEnd = $this->Form->end(); if (!empty($ajax)) { echo sprintf( '', sprintf( '', empty($data['title']) ? h(Inflector::humanize($this->request->params['action'])) . ' ' . $modelForForm : h($data['title']) ), sprintf( '', sprintf( '%s%s
%s%s
%s%s', empty($data['description']) ? '' : $data['description'], $formCreate, $ajaxFlashMessage, $fieldsString, $formEnd, $metaFieldString ) ), sprintf( '', $this->element('genericElements/Form/submitButton', $submitButtonData) ) ); } else { echo sprintf( '
%s
%s%s
%s
%s
%s%s%s
', empty($data['skip_side_menu']) ? 'form' : 'menuless-form', $formCreate, empty($data['title']) ? h(Inflector::humanize($this->request->params['action'])) . ' ' . $modelForForm : h($data['title']), $ajaxFlashMessage, empty($data['description']) ? '' : $data['description'], $fieldsString, $formEnd, $metaFieldString, $this->element('genericElements/Form/submitButton', $submitButtonData) ); } ?>