Proposta de união jetphp + FormDin + easyform
bjverde opened this issue · 49 comments
Versão originam
Vou escrever em PT-BR mesmo.
@JoaoArtur , @gilglecio , @cassiogiehl
Primeiro, parabéns pelo trabalho de vocês. Estou vendo que estão trabalhando firme no jetphp.
A minha proposta é unir forças para desenvolver um FrameWork PHP para construção de sistemas. Algo que seja de fácil uso, produtivo e com diversos componentes prontos para o uso. Sem engessar o desenvolvedor, possibilitando a criação e compartilhamento de novos componentes.
Os navegadores só entendem HTML, CSS e JavaScript. A cada dia a demanda por sistemas Web só cresce, obrigando o desenvolvedor saber uma quantidade cada vez maior de linguagens e tecnologia. Tomando muito tempo e esforço repetitivo, isso sem falar que a cada 5 segundos aparece um FrameWork JavaScript.
A união dos esforço irá gerar um FrameWork melhor. Possibilitando ao desenvolvedor com pouco conhecimento e/ou tempo entregar um sistema com grandes funcionalidades.
Vi que um de vocês está falando de melhores praticas com PSR1, além disso muito ainda deve ser feito. Exemplo de algumas perguntas
- O foco será produtividade ou beleza ?
- Alguém já fez a parte de API Rest ?
- Qual será o look and feel do Front-end ? BootStrap, Materialize, Vuetify ou talvez algo próprio
- A documentação está pronta ? Em inglês e PT-BR
- Tem vídeo sobre ?
- Tem Aplicação de exemplo ?
- Tem exemplo de uso de cada um dos componentes ?
São 3 FrameWorks fazendo + ou - as mesmas coisas, gastando tempo e esforço. Vamos nos unir e fazer algo algo melhor.
Minha ideia é fazer tudo baseado no motor do Element HTML.
O jetphp parece que não utiliza esse conceito. Porém o FormDin e o Easyform já estão utilizando.
- Motor Element HTML no FormDin - https://github.com/bjverde/formDin/blob/master/base/classes/webform/TElement.class.php
- Motor Element HTML no Easyform - https://github.com/cajudev/easyform/blob/master/src/Elements/Element.php
O uso desse motor com OO, possibilitar com facilidade deixar diversos componentes prontos o uso com pouco esforço.
Exemplo do código para criar um grid simples
$dados = $controller->selectAll();
$gride = new TGrid('gdTeste' // id do gride
,'Lista de Pedidos'
);
$gride->setData( $dados ); // array de dados
$gride->addColumn($PK, 'id Pedido');
$gride->addColumn('NOME_COMPRADOR','Nome do Comprador');
$gride->addColumn('DATA_PEDIDO', 'Data');
$gride->addColumn('FORMA_PAGAMENTO', 'Pagamento');
$frm->addHtmlField('gride', $gride);
Obs:
1 - Acho que foi com o João que conversei algumas vezes no grupo do PHPBrasil do Faceboook.
2 - Ainda não mandei Richard Lopes do EasyForm
3 - Atualmente o FormDin tem um gerador de código. Ele lê o banco de dados e gera a primeira versão do sistema com base no banco em minutos.
@helhoso vi que deseja usar o TGrid , abaixo o link da classe principal que tem apenas mais de 3.200 linhas
https://github.com/bjverde/formDin/blob/master/base/classes/webform/TGrid.class.php
Porém sem TElement ele não será muito util
https://github.com/bjverde/formDin/blob/master/base/classes/webform/TElement.class.php
A questão é justamente esta.... quero utilizar LIBs que facilitem mas não podem ser grandes e muito menos complicar a manutenção do código
que tal utilizar Angular?
que tal utilizar Angular?
Angular pode ser sim uma opção, porém código deve gerar uma API/REST. Pois o Angular só conversa via JSON.
A questão é justamente esta.... quero utilizar LIBs que facilitem mas não podem ser grandes e muito menos complicar a manutenção do código
Infelizmente para fazer tarefas mais complexas as classes ficaram grandes mesmo. Na imagem abaixo tem um exemplo do Front-End criado com FormDin
https://github.com/bjverde/formDin/blob/master/documents/img/screenshot-2018-2-4_APPEV2_01.png
O segundo link mostra o codigo do Front-end
https://github.com/bjverde/formDin/blob/master/appexemplo_v2.0/modulos/municipio.php
O terceiro link tem o codigo da DAO para comunicar com o banco, repare que tem o crud completo
https://github.com/bjverde/formDin/blob/master/appexemplo_v2.0/dao/MunicipioDAO.class.php
Porém nos dois casos para fazer funcionar a biblioteca fica compelxa
@helhoso vc viu o video do SysGen é algo mais proximo do seu projeto. No momento são 22 classes para gerar o sistema, criando o menu, telas cruds, dao, vo, controllers. Então para que algo fique facil de usar pode ser a classes fiquem grandes pois são diversos cenarios.
https://www.youtube.com/watch?v=J2yWEVwwOZw&t
é algo parecido com isso que estou tentando fazer
"Angular pode ser sim uma opção, porém código deve gerar uma API/REST. Pois o Angular só conversa via JSON."
Sei nada de API/REST, nem por onde começar.
"Angular pode ser sim uma opção, porém código deve gerar uma API/REST. Pois o Angular só conversa via JSON."
Sei nada de API/REST, nem por onde começar.
Vou tentar te explicar muito por cima mesmo sobre o Angular. O Angular é um FrameWork JavaScript feito pelo google que funciona do lado do cliente (navegador). O PHP funciona do lado do servidor gerando o HTML para o navegador. Quando uma pessoa acessa um site/sistema feito em angular recebe html/javascript e css direto. A parte cliente (angular) ser comunida com o servidor via API/REST.
O link abaixo é o vídeo "ANGULAR EM 7 MINUTOS - Tudo Que Você Precisa saber! da DevMedia"
https://www.youtube.com/watch?v=YX0y1FMlb8I
O Link abaixo é um exemplo de API/REST com JSON
http://api.bitvalor.com/v1/ticker.json
Se desejar fazer um curso de Angular recomendo o curso da Loiane Groner é gratuito e está disponivel na Web.
https://www.youtube.com/watch?v=tPOMG0D57S0&list=PLGxZ4Rq3BOBoSRcKWEdQACbUCNWLczg2G
A escolha do BootStrap para o novo Layout no FormDin5 acontece pois com o BootStrap não estou mudando radicalmente o funcionamento do FormDin. A mudança será basicamento no visual. Porém mudar para Angular, Reacat ou VueJs será um mudança muito grande paradima.
https://www.youtube.com/watch?v=J2yWEVwwOZw&t
é algo parecido com isso que estou tentando fazer
@helhoso então para que reinventar a roda ?? Vamos unir forçar e trabalhar em algo bem melhor. Como você pode ver o SysGen já está mais avançado que phpFrameWorkClass. Porém muito ainda precisa ser feito tanto no SysGen quanto no FormDin.
No caso dor FormDin já tem um boa documentação
https://github.com/bjverde/formDin/wiki
Tem parte de um curso já disponivel no YouTube
https://www.youtube.com/watch?v=OCrf_sZ8H58&list=PL296LQLcRfW67riEtAanqvaIiXJX-yMyY
o FormDin é utilizado em varios locais em ambiente de produção. Porém ele não tão famoso quanto outros FrameWork contudo é muito muito facil mesmo usar e criar sistemas.
@ThiGaleno a classe TElement é motor do FormDin é dela que tudo nasce.
https://github.com/bjverde/formDin/blob/master/base/classes/webform/TElement.class.php
Desculpe te marquei na isseu errada na primeira vez
@ThiGaleno têrm como você me ajudar?
Eu não sei como implementar o código com essa biblioteca
@ThiGaleno a classe TElement é motor do FormDin é dela que tudo nasce.
https://github.com/bjverde/formDin/blob/master/base/classes/webform/TElement.class.phpDesculpe te marquei na isseu errada na primeira vez
@helhoso se vc está falando da classe TElement no tem o código dela. Se está falando da TGrid também tem o código no mesmo lugar.
Diga exatamente qual é a sua dúvida e o que deseja.
@helhoso como está seu conhecimento de orientação objeto ??
A Classe TGrid extende TTable que extende de TElement.
Em html para criar um link fazemos
<a href='index.php' class='navbar-brand'>Form Sigla</a>
Para fazer a mesma coisa com TElement criamos uma classe TA
https://github.com/bjverde/formDin5/blob/master/base/core/webform/TA.class.php
Depois podemos criar um metodo
public function getNavBrand()
{
$navBrand = new TA();
$navBrand->setClass('navbar-brand');
$navBrand->setAttribute('href','index.php');
$navBrand->add('Form Sigla');
return $navBrand;
}
O resultado irá retornar um Objeto do tipo TA com vários atributos preenchidos. Fazendo
$navBrand->show() irá gerar o HTML para o navegador.
Estou tentando desenvolver um framework, trabalho nele um pouco quase todo dia, como posso implementar essa biblioteca para que funcione no código gerado por ele?
A finalidade do framework é gerar um código quase finalizado para reduzir o tempo de desenvolvimento.
https://github.com/helhoso/phpFrameWorkClass
Está desatualizado mas esta semana já descarrego uma atualização.
outra coisa, porqUe não podemos falar em uma sala tipo whatsapp ou outra qualquer?
Sistema exemplo 2.5 com FormDin 5.0.0-alpha2
Existem 4 usuários, cada um com um perfil diferete!
login: root e senha: root → é o super usuário, que pode criar novas telas com o gerador
login: admin e senha: admin → é o super administrador, pode incluir outros usuarios e conceder acesso
login: user e senha: user → usario comum pode operar todas as telas
login: trainee e senha: trainee → tem acesso apenas uma tela
Não entrou com nenhum deles (usuario/senha).###
Sistema exemplo 2.5 com FormDin 5.0.0-alpha2
@helhoso o FormDin 5 está em total processo de construção. Não recomendo usar no momento, só se desejar participar do processo de desenvolvimento. O FormDin 4 está pronto para uso inclusive em ambiente de produção.
https://github.com/bjverde/formDin
Porém para usar aplicação de exemplo 2.0 e 2.5 você precisa rodar os scripts de banco de dados do MySQL
https://github.com/bjverde/formDin/tree/master/modelo_banco_exemplos
Rode os scritps na sequencia
- 01_script_criacao_banco.sql
- 02_script_inclusao_dados.sql
- 03_script_usuario_banco.sql
Estou tentando desenvolver um framework, trabalho nele um pouco quase todo dia, como posso implementar essa biblioteca para que funcione no código gerado por ele?
A finalidade do framework é gerar um código quase finalizado para reduzir o tempo de desenvolvimento.
@helhoso você acabou de descrever o projeto SysGen que utiliza o FrameWork FormDin. A biblioteca que você está tentando usar no seu FrameWork é parte do FormDin.
Por que não unimos forças em volta do FormDin e nos dois trabalhamos para melhorar um só FrameWork. Para seu phpFrameWorkClass chegar proximo das funcoinalidades do FormDin e do SysGen será muito muito trabalho apenas para uma pessoas. Isso sem falar só estará refazendo o que já foi feito.
outra coisa, porqUe não podemos falar em uma sala tipo whatsapp ou outra qualquer?
Confesso que não gosto da ideia de whatsapp ou telegrama para grupos de desenvolvimento. O motivo é para seguir o exemplo do StackOverflow.
Vou te procucurar no grupo do PHP Brasil no Facebook e assim poderemos conversar melhor.
Eu já faço parte do PHP Brasil facebook
só precisamos agora é de um horário compativel para nós dois
@helhoso ,
Recomendo que use o link abaixo na ordem abaixo
1 - SysGen - Do Zero até Rodar. Aqui vai direto ao ponto montando tudo que precisa para funcionar o SysGen e o FormDin
https://github.com/bjverde/sysgen/wiki/Do-Zero-at%C3%A9-Rodar
2 - Curso do FormDin no YouTube.
https://www.youtube.com/watch?v=OCrf_sZ8H58&list=PL296LQLcRfW67riEtAanqvaIiXJX-yMyY
3 - Documentação do FormDin FrameWork
https://github.com/bjverde/formDin/wiki
Já via que conseguiu achar o local para ver as configurações do PHP
jetphp/jetphp#15 (comment)
Sobre a versão do PHP recomendo usar sempre a versão mais recente do PHP no caso é a versão 7.4
jetphp/jetphp#15 (comment)
No windows eu não uso XAMPP, devida minha necessidade costumo usar o WAMP pois é mais facil anternar entre as versões do PHP. Procurando no Google para alterar a versão do PHP no XAMPP o melhor é remover e instalar novamente. Fonte:
https://pt.stackoverflow.com/questions/93618/como-posso-setar-uma-vers%C3%A3o-antiga-do-php-no-xampp-em-localhost/93648
Se desejar usar o WAMPP o vídeo 3 do curso de FormDin mostra como alterar a versão
https://www.youtube.com/watch?v=fupmd0W1wtE&list=PL296LQLcRfW67riEtAanqvaIiXJX-yMyY&index=4
Mais um detalhe...
Quando selecionei apenas uma tabela que continha chave estrangeira, o sistema gerou uma chamada para uma classe que não foi criada.
Sugestão: Exibir um alerta e não prosseguir informando que existe uma dependencia não declarada
OU adicionar a tabela da chave estrangeira e criar as classes necessárias.
Estou a procura de um parceiro para desenvolver o FormDin
Alguem se habilita?????
Preciso de uma pessoa que tenha disponibilidade de trocar ideias diretamente como se estivesse trabalhando lado-a-lado via whatsapp ou gmail.
Após criar meu projeto este erro foi apresentado
Constatei que o FormDin não criou a pasta base\tmp quando foi isntaladoResolvi com a inclusão das linhas 1310,1311 e 1312
@helhoso que legal !!!! Obrigado mesmo pela correção.
O que você acha de colocar o SEU NOME como o responsavel pela correção desse bug ?? Se aceitar esse desafio seu problema deixa de ser do PHP e/ou FormDin e será de Git. Para isso recomendo fazer um Pull Request.
O Tutorial mostrar como fazer um Pull Request passo a passo.
https://www.digitalocean.com/community/tutorials/como-criar-um-pull-request-no-github-pt
Já criei um isseu para o problema
#195
Bom dia!
Seguindo as orientações consegui instalar o FormDin e o Sysgen
A primeira inconsistencia que encontrei foram as tabelas do MySQL sendo exibidas junto com as tabelas dos usuarios.
Vou ver o código e procurar uma solução, caso eu a encontre volto aqui.
Humm... interessante não tinha visto esse problema ! Você pode detalhar mais ??
1 - Qual versão do MySql ?
2 - Tem o Script de criação do Banco de dados ?
3 - Quais os parametros informados no MySql ?
Após criar meu projeto este erro foi apresentado
Constatei que o FormDin não criou a pasta base\tmp quando foi isntalado
Resolvi com a inclusão das linhas 1310,1311 e 1312@helhoso que legal !!!! Obrigado mesmo pela correção.
O que você acha de colocar o SEU NOME como o responsavel pela correção desse bug ?? Se aceitar esse desafio seu problema deixa de ser do PHP e/ou FormDin e será de Git. Para isso recomendo fazer um Pull Request.
O Tutorial mostrar como fazer um Pull Request passo a passo.
https://www.digitalocean.com/community/tutorials/como-criar-um-pull-request-no-github-ptJá criei um isseu para o problema
#195
Blz mas eu tô apanhando até pra chegar aqui neste forum
toda vez que acesso o git fico perdido sem saber como encontrar as coisas
Blz mas eu tô apanhando até pra chegar aqui neste forum
toda vez que acesso o git fico perdido sem saber como encontrar as coisas
Calma no inicio é assim porém depois de um tempo tudo vai melhorar
Após criar meu projeto este erro foi apresentado
Constatei que o FormDin não criou a pasta base\tmp quando foi isntalado
Resolvi com a inclusão das linhas 1310,1311 e 1312@helhoso que legal !!!! Obrigado mesmo pela correção.
O que você acha de colocar o SEU NOME como o responsavel pela correção desse bug ?? Se aceitar esse desafio seu problema deixa de ser do PHP e/ou FormDin e será de Git. Para isso recomendo fazer um Pull Request.
O Tutorial mostrar como fazer um Pull Request passo a passo.
https://www.digitalocean.com/community/tutorials/como-criar-um-pull-request-no-github-ptJá criei um isseu para o problema
#195
Gostei! Ele funciona parecido com SVN
Vou procurar o instalado para Win e baixar
O que danado é 'isseu ' ? traduz por favor
O que danado é 'isseu ' ? traduz por favor
Isseu é mesmo que questão, dúvida, ticket de serviço. É o termo usado pelo Git para lista os problemas e dúvidas.
Duvida
Quando fui instalar o Git, quase no final ele mensionou o TortoiseSVN, só que eu já tenho instalado.
@helhoso essa vou ficar te devendo. Pois eu uso o git via linha de comando seja no Windows ou Linix. O mais próximo de interface gráfica é a intenção com Visual Studio Code ou Eclipse PDT
Duvida
Quando fui instalar o Git, quase no final ele mensionou o TortoiseSVN, só que eu já tenho instalado.@helhoso essa vou ficar te devendo. Pois eu uso o git via linha de comando seja no Windows ou Linix. O mais próximo de interface gráfica é a intenção com Visual Studio Code ou Eclipse PDT
tá de boa
instalei o Git e o Tortoise continuou funcionando
agora é só ver como faço para que minhas alterações possam subir publicadas no repositorio do github. Não faço ideia
Troca essa mensagem
const GEN02_NOT_READY = 'Seu Mané teste as configurações de banco!!';
se deseja que a aplicação seja mais profissional
Troca essa mensagem
const GEN02_NOT_READY = 'Seu Mané teste as configurações de banco!!';
se deseja que a aplicação seja mais profissional
@helhoso desculpe a demora tive alguns problemas. Você razão preciso melhorar a mensagem. Cadastrei a isseu bjverde/sysgen#104 no SysGen
O que você acha de colocar o SEU NOME como o responsavel pela correção desse bug ?? é o esquema de fazer Pull Request
O Tutorial mostrar como fazer um Pull Request passo a passo.
https://www.digitalocean.com/community/tutorials/como-criar-um-pull-request-no-github-pt
@helhoso são várias classes envolvidas para criar essa tela, cada classe é responsavel por uma parte.
- Tudo inicia no arquivo sysgen/modulos/gen02.php - https://github.com/bjverde/sysgen/blob/master/modulos/gen02.php
- Todas as telas em formDin são criadas com TForm
- o Grid é criado pela classe TGrid com o usu do addCheckColumn
- A lista de Tabelas vem a classe TGeneratorHelper::loadTablesFromDatabase() que faz uso da classe TDAO::loadTablesFromDatabase dentro do FormDin
@helhoso são várias classes envolvidas para criar essa tela, cada classe é responsável por uma parte.
Complementando a resposta anterior.
No MySQL a lista de tabelas é gerada TDAO::loadTablesFromDatabase dentro do FormDin na linha 1.441
https://github.com/bjverde/formDin/blob/master/base/classes/webform/TDAO.class.php#L1441
destaco a linha 1.462 e 1.483
and t.TABLE_SCHEMA not in ('sys','performance_schema','mysql','information_schema')
Interessante....
Após tere feito as alterações no browser aparecem as tabelas, copiei o select e rodei direto no banco, para minha surpresa as tabelas do sistema não vieram....
e agora ???
Interessante....
Após tere feito as alterações no browser aparecem as tabelas, copiei o select e rodei direto no banco, para minha surpresa as tabelas do sistema não vieram....
e agora ???
Achei as suas modificações
Considerando o que falou
eu to fazendo as alterações direto lá, sei que não é o correto, mas enquanto
elas forem pequenas, e o github têm um controle disso que eu vi.
fiz as alterações mas no browser ainda vem as tabelas do sistema só que eu rodei
o select no banco e (vixi) não vieram as tabelas.... e agora?
O acho que aconteceu foi que você fez as modifições na branch patch-1 de cada projeto no repositorio remoto. Porém essas alterações não estão no seu computador. O que deve fazer é:
- acessar a pasta que está o projeto FormDin na linha de comando
- rodar o comando
git checkout patch-1
para trocar para a branch patch-1 - rodar o comando
git pull
para atualizar o repositorio local com as informações do repositorio remoto. - acessar a pasta que está o projeto SysGen na linha de comando
- rodar o comando
git checkout patch-1
para trocar para a branch patch-1 - rodar o comando
git pull
para atualizar o repositorio local com as informações do repositorio remoto. - Agora tem os dados do computador igual do servidor.
- Basta rodar novamente o SysGen o problema problema provavelmente foi resolvido.
Nesse ponto você corrigiu o problema no seu computador ! Recomendo editar o código sempre local.
Agora deverá fazer um Pull Request para que as suas modificações entrem no projeto.
O Tutorial mostrar como fazer um Pull Request passo a passo.
https://www.digitalocean.com/community/tutorials/como-criar-um-pull-request-no-github-pt
Se precisar saber sobre Git na Wiki do FormDin tem links para o livro oficial e gratuito e videos aulas.
https://github.com/bjverde/formDin/wiki/Baixando-o-formDin#clonando
Lista de FrameWork em pt-br semelhantes do FormDin, todos foram encontrados no grupo PHP-Brasil do Facebook