4. Estilização Dinâmica

Agora que temos uma melhor estrutura, adicionaremos variáveis responsáveis pela estilização dos nossos elementos

$inputTemplate = new \Cajudev\UI\Template('input', [
   'fieldset' => [
      'attributes' => [
         'class' => 'form-group col-::col' // nova variável
      ],
      'children' => [
         'label' => [
            'attributes' => [
               'for'   => '::id',
               'class' => 'color-::color' // nova variável
            ],
            'text' => '::label'
         ],
         'input' => [
            'attributes' => [
               'id'    => '::id',
               'class' => 'form-control',
               'type'  => '::type'
            ],
         ],
         'small' => [
            'text' => '::small',
            'attributes' => [
               'class' => 'color-light-::color'  // nova variável
            ]
         ]
      ]
   ],
]);

Também colocaremos algumas informações básicas na criação do objeto

$easyForm = new \Cajudev\EasyForm([
   'id'     => 'form',
   'action' => '#',
   'class'  => 'd-flex flex-wrap',
]);

$easyForm->templates->add($inputTemplate);

Adicionamos também no css algumas classes

.color-blue {
   color: #0d4cac;
}
.color-light-blue {
   color: #00c3ff;
}
.color-purple {
   color: #770d69;
}
.color-light-purple {
   color: #c515a8;
}

Finalmente atribuímos valores às novas variáveis

$easyForm->create('input', [
   '::col'   => '12',
   '::id'    => 'username',
   '::label' => 'Nome de Usuário',
   '::type'  => 'text',
   '::small' => 'Informe um nome de usuário sem caracteres especiais',
   '::color' => 'blue'
]);

$easyForm->create('input', [
   '::col'   => '6',
   '::id'    => 'password',
   '::label' => 'Senha',
   '::type'  => 'password',
   '::small' => 'Informe uma senha de 8 caracteres, incluindo letras e números',
   '::color' => 'blue'
]);

$easyForm->create('input', [
   '::col'   => '6',
   '::id'    => 'password',
   '::label' => 'Repita a Senha',
   '::type'  => 'password',
   '::small' => 'Confirme a senha informada anteriormente',
   '::color' => 'blue'
]);

echo $template->render(['formulario' => $easyForm]);

Resultado:

Informe um nome de usuário sem caracteres especiais
Informe uma senha de 8 caracteres, incluindo letras e números
Confirme a senha informada anteriormente

Caso queira depois alterar o estilo, basta trocar a variável ::color e tudo será atualizado.

$easyForm->create('input', [
   '::col'   => '12',
   '::id'    => 'username',
   '::label' => 'Nome de Usuário',
   '::type'  => 'text',
   '::small' => 'Informe um nome de usuário sem caracteres especiais',
   '::color' => 'blue'
]);

$easyForm->create('input', [
   '::col'   => '6',
   '::id'    => 'password',
   '::label' => 'Senha',
   '::type'  => 'password',
   '::small' => 'Informe uma senha de 8 caracteres, incluindo letras e números',
   '::color' => 'purple' // alterado aqui
]);

$easyForm->create('input', [
   '::col'   => '6',
   '::id'    => 'password',
   '::label' => 'Repita a Senha',
   '::type'  => 'password',
   '::small' => 'Confirme a senha informada anteriormente',
   '::color' => 'purple'  // alterado aqui
]);

echo $template->render(['formulario' => $easyForm]);

Resultado

Informe um nome de usuário sem caracteres especiais
Informe uma senha de 8 caracteres, incluindo letras e números
Confirme a senha informada anteriormente