Skip to content

Instantly share code, notes, and snippets.

@Septdir
Last active February 12, 2026 08:47
Show Gist options
  • Select an option

  • Save Septdir/77a429ebbca31d075d981c68b9ebf165 to your computer and use it in GitHub Desktop.

Select an option

Save Septdir/77a429ebbca31d075d981c68b9ebf165 to your computer and use it in GitHub Desktop.
<?php
/**
* Method to set uikit classes to form.
*
* @param \Joomla\CMS\Form\Form $form Form object.
*
* @since __DEPLOY_VERSION__
*/
function setUikitFormClasses(\Joomla\CMS\Form\Form $form): void
{
/** @var Joomla\CMS\Form\FormFactory $formFactory */
$formFactory = Joomla\CMS\Factory::getContainer()->get(\Joomla\CMS\Form\FormFactoryInterface::class);
foreach ($form->getGroup('') as $field)
{
$name = $field->__get('fieldname');
$group = $field->__get('group');
$setClass = null;
if ($field instanceof Joomla\CMS\Form\Field\TextareaField)
{
$setClass .= ' uk-textarea';
}
elseif ($field instanceof Joomla\CMS\Form\Field\CheckboxesField)
{
continue;
}
elseif ($field instanceof Joomla\CMS\Form\Field\CheckboxField)
{
$setClass .= ' uk-checkbox';
}
elseif ($field instanceof Joomla\CMS\Form\Field\RangeField)
{
$setClass .= ' uk-range';
}
elseif ($field instanceof Joomla\CMS\Form\Field\ListField)
{
$setClass .= ' uk-select';
}
elseif ($field instanceof Joomla\CMS\Form\Field\RadioField)
{
$setClass .= ' uk-radio';
}
elseif ($field instanceof Joomla\CMS\Form\Field\TextField)
{
$setClass .= ' uk-input';
}
elseif ($field instanceof Joomla\CMS\Form\Field\SubformField)
{
$source = $field->__get('formsource');
$subform = $formFactory->createForm($form->getName() . '.subform.' . '.' . $group . '.' . $name);
$subform->load($source);
setUikitFormClasses($subform);
$form->setFieldAttribute($name, 'formsource', $subform->getXml()->asXML(), $group);
}
$class = $field->getAttribute('class');
if ($setClass && !str_contains($class, $setClass))
{
$class .= ' ' . $setClass;
$form->setFieldAttribute($name, 'class', $class, $group);
}
}
}
setUikitFormClasses($this->form);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment