bjverde/formDin

Proposta de união jetphp + FormDin + easyform

bjverde opened this issue · 49 comments

Versão originam

jetphp/jetphp#15


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.

Element HTML

O jetphp parece que não utiliza esse conceito. Porém o FormDin e o Easyform já estão utilizando.

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);

Grid

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

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.php

Desculpe 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

@helhoso

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

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.
image
Vou ver o código e procurar uma solução, caso eu a encontre volto aqui.

Após criar meu projeto este erro foi apresentado
image
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
image

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 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-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 ?

Passei o dia ontem atualizando
são as versões mais recentes
está rodando no xampp
image

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-pt

Já 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-pt

Já 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

Duvida
Quando fui instalar o Git, quase no final ele mensionou o TortoiseSVN, só que eu já tenho instalado.
Como fica minha instalação anterior? Vai modificar?
image

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

Bom dia!
Sabe me falar qual classe cria esta parte:
image

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

Bom dia!
Sabe me falar qual classe cria esta parte:
image

@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

Sabe me falar qual classe cria esta parte:
image

@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')

Mesmo após eu ter feito as alterações continuam vindo as tabelas do sistema
image

Seguencia
Primeira Tela
image

Segunda Tela - já vem com phpmyadmin (schema)
image

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

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
image

@helhoso você pode por favor commitar a sua alteração e fazer um pull request ! Obrigado.

Resolvi com a inclusão das linhas 1310,1311 e 1312
image

@helhoso já commitei sua correção na branch nextversion ! Obrigado pela dica sua ajuda conta 😄