/** * @param Form $form * * @return string */ public function generateFormID($form) { if ($id = $form->getHTMLID()) { return Convert::raw2htmlid($id); } $reflection = new ReflectionClass($form); $shortName = str_replace(array('.', '/'), '', $form->getName()); return Convert::raw2htmlid($reflection->getShortName() . '_' . $shortName); }
/** * Gets the schema for this form as a nested array. * * @param Form $form * @return array */ public function getSchema(Form $form) { $schema = ['name' => $form->getName(), 'id' => $form->FormName(), 'action' => $form->FormAction(), 'method' => $form->FormMethod(), 'attributes' => $form->getAttributes(), 'data' => [], 'fields' => [], 'actions' => []]; /** @var FormField $action */ foreach ($form->Actions() as $action) { $schema['actions'][] = $action->getSchemaData(); } /** @var FormField $field */ foreach ($form->Fields() as $field) { $schema['fields'][] = $field->getSchemaData(); } return $schema; }
/** * Get link to schema url for a given form * * @param Form $form * @return string */ protected function getSchemaLinkForForm(Form $form) { $parts = [$this->Link('schema'), $form->getName()]; if (($record = $form->getRecord()) && $record->isInDB()) { $parts[] = $record->ID; } elseif (($data = $form->getData()) && !empty($data['ID'])) { $parts[] = $data['ID']; } return Controller::join_links($parts); }