Biblioteca PHP para gerar componentes HTML usando Materialize CSS. A classe principal está em builder/buildMaterial.php.
- PHP 8 ou superior;
- Materialize CSS e Material Icons carregados na página;
- jQuery para máscaras, autocomplete e envio de formulários;
- os arquivos JavaScript e CSS deste projeto disponíveis na aplicação.
require_once __DIR__ . '/builder/buildMaterial.php';
$builder = new buildMaterial();
$builder->inputText('nome', 'Nome', 6, true);
$builder->inputPassword('senha', 'Senha', 6);
$builder->inputTextarea('observacao', 'Observação');
echo $builder->buildForm('POST');Os campos são acumulados internamente até que buildForm() seja chamado. Cada instância recebe um ObjID próprio, usado para associar os campos ao formulário correto.
Inicializa uma instância do builder e atribui um identificador numérico único em ObjID. Esse identificador é usado nos atributos id e form dos elementos HTML.
buildModal(string $modalTitle, string $modalContent, ?string $buttonText = null, ?string $buttonIcon = null, ?array $options)
Retorna um modal Materialize com botão de abertura, título, conteúdo e ações. $options deve ser um array no formato ['Texto do botão' => 'comandoJavaScript()'].
echo $builder->buildModal('Excluir registro', 'Deseja excluir?', 'Excluir', 'delete', ['Confirmar' => 'excluirRegistro()']);Cria e imprime um card Materialize. Se $imagem não for null, ela é carregada de media/img/$imagem; $submits são inseridos na área de ações. O método usa echo internamente e não retorna o HTML.
$builder->buildCard('Produto', 'produto.jpg', '<p>Descrição</p>', '<a href="produto.php">Ver</a>');Retorna um chip Materialize (<div class="chip">) com o conteúdo informado.
echo $builder->buildChip('Ativo');Retorna um botão flutuante fixo. $icon é o nome do Material Icon e $url é usado no link ?page=$url. $options está reservado e não é utilizado atualmente.
echo $builder->buildFloating('add', 'novo-produto');Retorna o formulário com todos os elementos adicionados. O formulário usa multipart/form-data. $display pode ser row, inline, inline_block ou none. Depois da geração, o conteúdo acumulado é limpo.
$builder->inputText('email', 'E-mail', 12, true);
echo $builder->buildForm('POST', 'inline');Adiciona ao formulário um título de seção (<h5>) e um espaço abaixo dele.
inputText(string $name, string $texto, int $gridSize = 12, $required = false, $mask = null, $value = null, $disabled = false)
Adiciona um campo de texto. $gridSize define a largura Materialize; $required, $value e $disabled controlam obrigatoriedade, valor inicial e disponibilidade. $mask aplica uma máscara jQuery Mask; 00/00/0000 também ativa o datepicker.
$builder->inputText('cpf', 'CPF', 6, true, '000.000.000-00');
$builder->inputText('nascimento', 'Nascimento', 6, false, '00/00/0000');inputTextarea(string $name, ?string $texto, int $gridSize = 12, $required = false, $value = null, $disabled = false, $richText = false)
Adiciona uma área de texto com altura mínima de 150px. Com $richText = true, aplica a classe richText para ativar o editor de texto enriquecido.
$builder->inputTextarea('descricao', 'Descrição', 12, true, null, false, true);inputHidden(string $name, ?string $value)
Adiciona um campo oculto. Quando $name é captcha e $value é true, usa CLIENT_KEY e inclui o script do Google reCAPTCHA.
$builder->inputHidden('id', '42');
$builder->inputHidden('captcha', true);inputSelect(string $name, string $texto, int $gridSize = 12, array $options, $required = false, $selected = 'unset', bool $returnHTML = false)
Cria um <select> Materialize. $options usa o formato ['valor' => 'Texto']; $selected define a opção inicial. Com $returnHTML = true, retorna o HTML; caso contrário, adiciona ao formulário.
$builder->inputSelect('status', 'Status', 6, ['A' => 'Ativo', 'I' => 'Inativo'], true, 'A');
$html = $builder->inputSelect('tipo', 'Tipo', 6, [1 => 'Interno'], false, 'unset', true);Adiciona um campo de upload. O primeiro campo gera também um token oculto uploadSession. Os arquivos recebem nomes como file_1, file_2 etc. $multiple permite selecionar vários arquivos.
$builder->inputFile('documento', true);
$builder->inputFile('imagens', false, true);Cria um campo de senha e o adiciona ao formulário. Com $returnHTML = true, retorna o HTML em vez de acumulá-lo.
inputCheckbox(string $name, ?string $texto, int $gridSize = 6, bool $isSet = false, bool $returnHTML = false)
Cria uma caixa de seleção. $isSet define se ela inicia marcada; $returnHTML define se o HTML será retornado ou adicionado ao formulário.
$builder->inputCheckbox('aceito', 'Aceito os termos', 12);Adiciona um botão de rádio. Ele fica marcado quando $selected é igual a $value.
$builder->inputRadio('sexo', 'Masculino', 6, 'M', 'M');
$builder->inputRadio('sexo', 'Feminino', 6, 'M', 'F');buildFormSubmit(string $type, string $texto, string $action, string $icon = 'send', ?string $target = null)
Retorna uma ação de formulário. Os tipos disponíveis são a (link que submete), button (submit com formaction), button_redirect (redirecionamento via window.location) e inline_float (botão flutuante compacto com tooltip).
$acao = $builder->buildFormSubmit('button', 'Salvar', 'salvar.php', 'save');
$builder->addToForm($acao);inputAutocomplete(string $name, string $texto, int $gridSize = 12, $required = false, array $options, $selected = null)
Adiciona um autocomplete Materialize. O campo visível mostra o texto e o campo oculto com o nome original recebe o id escolhido. $options deve ter o formato ['id' => 'Texto']; $selected define a seleção inicial. Ao escolher uma opção, o JavaScript chama onAutocompleteSelection(id).
$builder->inputAutocomplete('cliente_id', 'Cliente', 12, true, [10 => 'Acme', 20 => 'JetWork'], 10);Retorna um botão circular com ícone, tooltip e link. Com $new_tab = true, abre o link em nova aba.
echo $builder->roundedButton('edit', 'editar.php?id=1', 'Editar');Adiciona HTML personalizado ao formulário e retorna o conteúdo acumulado.
$builder->addToForm('<p>Texto adicional</p>');Pretende retornar as máscaras registradas pelo builder. Na implementação atual, a propriedade de máscaras não está disponível; portanto, esse método não deve ser usado até ser corrigido.
Adiciona uma caixa de pesquisa à tabela, chamando tableSearch(ObjID) no evento keyup. O parâmetro $columns é aceito, mas ainda não é usado para limitar a busca a colunas específicas.
Inicia uma tabela Materialize com classe striped, cria o cabeçalho e abre o <tbody>. Cada argumento vira uma coluna <th>.
$builder->tableHeading('Nome', 'E-mail', 'Status');Adiciona uma linha à tabela atual; cada argumento vira uma célula <td>.
$builder->tableRow('Maria', 'maria@example.com', 'Ativo');Fecha o corpo e a tabela (</tbody></table>).
Retorna o HTML acumulado por tableSearch(), tableHeading(), tableRow() e tableFooter().
echo $builder->buildTable();Método auxiliar dos componentes que aceitam $returnHTML: retorna $HTML quando $returnMethod é true; caso contrário, adiciona-o ao formulário.
require_once __DIR__ . '/builder/buildMaterial.php';
$builder = new buildMaterial();
$builder->formSection('Cadastro');
$builder->inputText('nome', 'Nome', 6, true);
$builder->inputText('email', 'E-mail', 6, true);
$builder->inputSelect('perfil', 'Perfil', 6, ['admin' => 'Administrador', 'user' => 'Usuário'], true, 'user');
$builder->inputFile('avatar');
$builder->addToForm($builder->buildFormSubmit('button', 'Salvar', 'salvar.php', 'save'));
echo $builder->buildForm('POST');- Materialize CSS;
- RichText;
- jQuery Redirect;
- jQuery Mask.