* $form->setTemplateHelper('ClassName'); * * * Globally, the FormTemplateHelper can be set via the {@link Injector} API. */ class FormTemplateHelper { use Injectable; /** * @param Form $form * * @return string */ public function generateFormID($form) { if ($id = $form->getHTMLID()) { return Convert::raw2htmlid($id); } $reflection = new ReflectionClass($form); $shortName = str_replace(['.', '/'], '', $form->getName() ?? ''); return Convert::raw2htmlid($reflection->getShortName() . '_' . $shortName); } /** * @param FormField $field * * @return string */ public function generateFieldHolderID($field) { return $this->generateFieldID($field) . '_Holder'; } /** * Generate the field ID value * * @param FormField $field * @return string */ public function generateFieldID($field) { // Don't include '.'s in IDs, they confused JavaScript $name = str_replace('.', '_', $field->getName() ?? ''); if ($form = $field->getForm()) { return sprintf( "%s_%s", $this->generateFormID($form), Convert::raw2htmlid($name) ); } return Convert::raw2htmlid($name); } }