Craft\AmForms_FormsController::actionEditForm PHP Method

actionEditForm() public method

Create or edit a form.
public actionEditForm ( array $variables = [] )
$variables array
    public function actionEditForm(array $variables = array())
    {
        // Do we have a form model?
        if (!isset($variables['form'])) {
            // Get form if available
            if (!empty($variables['formId'])) {
                $variables['form'] = craft()->amForms_forms->getFormById($variables['formId']);
                if (!$variables['form']) {
                    throw new Exception(Craft::t('No form exists with the ID “{id}”.', array('id' => $variables['formId'])));
                }
            } else {
                $variables['form'] = new AmForms_FormModel();
            }
        }
        // Fields per set setting
        $fieldsPerSet = craft()->amForms_settings->getSettingsByHandleAndType('fieldsPerSet', AmFormsModel::SettingGeneral);
        $fieldsPerSet = $fieldsPerSet && is_numeric($fieldsPerSet->value) ? (int) $fieldsPerSet->value : 8;
        // Get available fields with our context
        $groupId = 1;
        $counter = 1;
        $variables['groups'] = array();
        $fields = craft()->fields->getAllFields('id', AmFormsModel::FieldContext);
        foreach ($fields as $field) {
            if ($counter % $fieldsPerSet == 1) {
                $groupId++;
                $counter = 1;
            }
            $variables['groups'][$groupId]['fields'][] = $field;
            $counter++;
        }
        // Get redirectEntryId elementType
        $variables['entryElementType'] = craft()->elements->getElementType(ElementType::Entry);
        // Get available attributes
        $variables['availableAttributes'] = array();
        $submission = new AmForms_SubmissionModel();
        $ignoreAttributes = array('slug', 'uri', 'root', 'lft', 'rgt', 'level', 'searchScore', 'localeEnabled', 'archived', 'spamFree');
        foreach ($submission->getAttributes() as $attribute => $value) {
            if (!in_array($attribute, $ignoreAttributes)) {
                $variables['availableAttributes'][] = $attribute;
            }
        }
        foreach ($fields as $field) {
            $variables['availableAttributes'][] = $field['handle'];
        }
        $this->renderTemplate('amforms/forms/_edit', $variables);
    }