Download the PHP package betocampoy/champs-frontend without Composer

On this page you can find all versions of the php package betocampoy/champs-frontend. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package champs-frontend

betocampoy/champs-frontend

Pacote Composer que centraliza templates Twig compartilhados e o micro-framework JavaScript champs-core-js para uso em projetos Symfony e projetos PHP legados com Twig.

A ideia central é eliminar a necessidade de escrever JavaScript customizado para os comportamentos de interface mais comuns, usando apenas atributos data-champs-* no HTML.


Índice


O que o pacote entrega

O que Onde fica Como usar
Templates Twig compartilháveis vendor/.../templates/ Namespace @ChampsFrontend
Micro-framework JS (champs-core-js) assets/champs-core-js/ Publicar e importar via init.js
Bootstrap simples para legado src/LegacyBootstrap.php LegacyBootstrap::createRenderer(...)
Construtor de respostas AJAX src/Response/AjaxFormResponse.php AjaxFormResponse::make()->...->toJson()
Script de publicação de assets bin/champs-frontend-publish-assets composer run champs-frontend-publish-assets

Requisitos


Instalação


Configuração no Symfony

1. Registrar o namespace Twig

Abra config/packages/twig.yaml e adicione:

Após qualquer alteração no twig.yaml, limpe o cache:

2. Publicar os assets para assets/

Isso copia os arquivos para assets/vendor/champs-frontend/.

3. Incluir CSS e JS no template base

4. Criar ou ajustar assets/app.js

5. Usar componentes nos templates


Configuração no legado

Use a classe LegacyBootstrap para montar o renderer Twig. Ela registra automaticamente:

Bootstrap do renderer

Publicar os assets no legado

Incluir CSS e JS no HTML

Se o projeto tiver um app.js próprio, siga o mesmo padrão do Symfony e importe a partir dele.


Publicação dos assets

O navegador não acessa arquivos dentro de vendor/, então os assets precisam ser copiados.

Projeto Destino padrão Comando
Symfony assets/vendor/champs-frontend composer run champs-frontend-publish-assets
Legado public/vendor/champs-frontend php vendor/bin/champs-frontend-publish-assets public/vendor/champs-frontend

O destino pode ser qualquer caminho: php vendor/bin/champs-frontend-publish-assets <destino>.


Templates Twig disponíveis

Os templates ficam na vendor/ e são acessados pelo namespace @ChampsFrontend. Você não precisa copiá-los para o seu projeto.

UI

_form.html.twig — macros de formulário

Macro Descrição
ui.input(options) Campo de formulário Bootstrap (<div class="col"> + <input>)
ui.button(options) Botão Bootstrap padrão
ui.ajaxButton(options) Botão com submissão AJAX via data-champs-ajax
ui.attrs(map) Renderiza um mapa como atributos HTML

Exemplo — input:

Exemplo — botão AJAX:


_modal.html.twig — modais Bootstrap

Exemplo — modal com formulário:


_card.html.twig — card Bootstrap


_notification_center.html.twig — central de notificações


Lista

Templates para construção de páginas de listagem.

Template Descrição
_page_header.html.twig Cabeçalho da página com título e subtítulo
_search_collapse.html.twig Filtro de busca colapsável
_list_content.html.twig Container genérico de lista
_pager.html.twig Paginação
_empty.html.twig Estado vazio (sem registros)
table/_table.html.twig Exibição em tabela
grid/_grid.html.twig Exibição em grid

Exemplo — cabeçalho:


Módulos JavaScript

O champs-core-js é um micro-framework JavaScript puro (sem dependências externas) com módulos independentes ativados por atributos data-champs-*.

Para referência completa de todos os atributos disponíveis, consulte assets/champs-core-js/DATA-DICTIONAIRE.md.

Para documentação detalhada de cada módulo, consulte assets/champs-core-js/README.md.

Resumo dos módulos

Módulo Arquivo Responsabilidade
AjaxForm modules/AjaxForm.js Submissão AJAX declarativa e pipeline de actions
DomPatch modules/DomPatch.js Manipulação de DOM via actions do backend
ActionRules modules/ActionRules.js Regras condicionais declarativas na UI
InputSanitize modules/InputSanitize.js Normalização de entradas de texto
InputMask modules/InputMask.js Máscaras de input (telefone, CPF, data, etc.)
Validate modules/Validate.js Validação de CPF, CNPJ e Inscrição Estadual
ValidationError modules/ValidationError.js Exibição de erros de validação do backend
ZipcodeSearch modules/ZipcodeSearch.js Busca de CEP via ViaCEP com autopreenchimento
VisibilityToggle modules/VisibilityToggle.js Exibir/ocultar campos sensíveis
CheckboxGroup modules/CheckboxGroup.js Seleção em grupo, contador e soma
CopyText modules/CopyText.js Copiar texto para a área de transferência
FormPopulation modules/FormPopulation.js Preencher selects/inputs dinamicamente
FormFiller modules/FormFiller.js Preenchimento em massa de campos
RemoteSelect modules/RemoteSelect.js Popula selects a partir de API remota
DatalistManager modules/DatalistManager.js Autocomplete com datalist
ModalManager modules/ModalManager.js Wrapper para modais Bootstrap 5
AutoOpen modules/AutoOpen.js Abertura automática de elementos no carregamento
Loader modules/Loader.js Indicador de carregamento
Message modules/Message.js Sistema de toast/mensagens globais
NotificationCenter modules/NotificationCenter.js Central de notificações in-app
NavLoader modules/NavLoader.js Loader durante navegação entre páginas
TabsPersistence modules/TabsPersistence.js Persistência da aba ativa (Bootstrap Tabs)
FormSectionsPersistence modules/FormSectionsPersistence.js Persistência de seções colapsadas
PreferenceManager modules/PreferenceManager.js Wrapper genérico para localStorage/sessionStorage
ConsentManager modules/ConsentManager.js Consentimento de cookies (LGPD)
DynamicColspan modules/DynamicColspan.js Colspan automático em tabelas
Calc modules/Calc.js Cálculos dinâmicos em formulários
PushManager modules/PushManager.js Notificações Push via Firebase FCM

Exemplos rápidos

Máscara de input:

CEP com autopreenchimento:

Copiar texto:

Consentimento LGPD:

Submissão AJAX (sem Twig):

Fila de submits (bipagem/scanner mais rápido que o round-trip):

Sem data-champs-ajax-queue, um submit disparado enquanto o anterior ainda está em voo é simplesmente descartado. Com a fila ativada, cada submit tira um snapshot dos campos na hora (o usuário já pode digitar/bipar o próximo valor) e processa um item por vez, em ordem. A lib não desenha nenhuma UI — cada tela ouve os 3 eventos e desenha sua própria lista "fila"/"processados":


PHP: AjaxFormResponse

Construtor fluente para montar a resposta JSON das actions do pipeline.

Actions disponíveis

Método Action gerada Efeito no frontend
messageSuccess($text) message Toast de sucesso
messageError($text) message Toast de erro
messageInfo($text) message Toast informativo
messageWarning($text) message Toast de aviso
validationError($fields) validation-error Marca campos inválidos e interrompe o pipeline
domPatchHtml($options, $html) dom-patch Substitui/insere HTML no DOM
redirect($url) redirect Redireciona para URL e interrompe o pipeline
reload() reload Recarrega a página e interrompe o pipeline
modal($options) modal Abre um modal Bootstrap
formfiller($data) formfiller Preenche campos do formulário
populate($data) populate Popula selects/inputs filhos
custom($function, $data) custom Executa função global JavaScript customizada

Formato JSON da resposta

Actions terminais

As actions abaixo interrompem a execução do pipeline assim que são processadas:


PHP: Notificações Push (FcmClient)

O pacote fornece o cliente JavaScript (PushManager.js) e o service worker (firebase-messaging-sw.js) para captura e registro de tokens FCM no browser. O envio server-side fica a cargo do projeto consumidor usando symfony/http-client e a FCM HTTP v1 API.

Pré-requisito

Baixe o JSON de credenciais do service account em:

Firebase Console → Configurações do projeto → Contas de serviço → Gerar nova chave privada

Salve o arquivo fora do repositório (ex.: config/firebase/firebase-service-account.json) e adicione-o ao .gitignore.

Implementação recomendada no projeto consumidor (Symfony)

1. Serviço de envio (FcmClient.php):

2. Entidade de persistência (PushSubscription):

3. Endpoint de registro (controller):

4. Envio com ícone e link (exemplo):

5. Command para cron:


Solução de problemas

There are no registered paths for namespace "ChampsFrontend"

O namespace não foi registrado no Twig. Para Symfony, verifique se config/packages/twig.yaml contém o paths correto e rode php bin/console cache:clear.

Templates não encontrados após atualização do pacote

O Twig pode ter em cache uma versão antiga. Limpe o cache:

Assets não atualizados após composer update

Repita o comando de publicação:

O initCore não está inicializando os módulos

Verifique se:

  1. O script usa type="module" no HTML
  2. O initCore(document) é chamado dentro do evento DOMContentLoaded
  3. O caminho para init.js está correto após a publicação dos assets

Módulos JS não reagem a elementos inseridos dinamicamente

O initCore precisa ser chamado novamente passando o container do novo conteúdo:


Observações gerais


Licença

MIT — Beto Campoy


All versions of champs-frontend with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
twig/twig Version ^2.12 || ^3.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package betocampoy/champs-frontend contains the following files

Loading the files please wait ...