bjverde / formDin

:elephant: FormDin or Dynamic Form is a php Framework for creating web system quickly and easily. Front-end, Back-end and DataBase
GNU General Public License v3.0
21 stars 6 forks source link

Proposta de união jetphp + FormDin + easyform #192

Closed bjverde closed 4 years ago

bjverde commented 5 years ago

Versão originam

https://github.com/jetphp/jetphp/issues/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

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.

bjverde commented 5 years ago

@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

helhoso commented 5 years ago

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

helhoso commented 5 years ago

que tal utilizar Angular?

bjverde commented 5 years ago

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.

bjverde commented 5 years ago

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

bjverde commented 5 years ago

@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

helhoso commented 5 years ago

https://www.youtube.com/watch?v=J2yWEVwwOZw&t é algo parecido com isso que estou tentando fazer

helhoso commented 5 years ago

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

bjverde commented 5 years ago

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

bjverde commented 5 years ago

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.

bjverde commented 5 years ago

@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 commented 5 years ago

@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

bjverde commented 5 years ago

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

bjverde commented 5 years ago

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

helhoso commented 5 years ago

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?

helhoso commented 5 years ago

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

bjverde commented 5 years ago

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

bjverde commented 5 years ago

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.

helhoso commented 5 years ago

Eu já faço parte do PHP Brasil facebook só precisamos agora é de um horário compativel para nós dois

bjverde commented 5 years ago

@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

bjverde commented 5 years ago

@helhoso

Já via que conseguiu achar o local para ver as configurações do PHP :nerd_face: https://github.com/jetphp/jetphp/issues/15#issuecomment-542797813

Sobre a versão do PHP recomendo usar sempre a versão mais recente do PHP no caso é a versão 7.4 https://github.com/jetphp/jetphp/issues/15#issuecomment-542797813

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

helhoso commented 5 years ago

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.

helhoso commented 5 years ago

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

helhoso commented 5 years ago

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.

helhoso commented 5 years ago

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.

bjverde commented 5 years ago

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 https://github.com/bjverde/formDin/issues/195

bjverde commented 5 years ago

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 ?

helhoso commented 5 years ago

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

helhoso commented 5 years ago

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

bjverde commented 5 years ago

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 :smiley:

helhoso commented 5 years ago

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

helhoso commented 5 years ago

O que danado é 'isseu ' ? traduz por favor

helhoso commented 5 years ago

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

bjverde commented 5 years ago

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.

bjverde commented 5 years ago

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

helhoso commented 5 years ago

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

helhoso commented 5 years ago

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

helhoso commented 5 years ago

Troca essa mensagem const GEN02_NOT_READY = 'Seu Mané teste as configurações de banco!!'; se deseja que a aplicação seja mais profissional

bjverde commented 5 years ago

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 https://github.com/bjverde/sysgen/issues/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

bjverde commented 5 years ago

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.

bjverde commented 5 years ago

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

helhoso commented 5 years ago

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

helhoso commented 5 years ago

Seguencia Primeira Tela image

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

helhoso commented 5 years ago

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

bjverde commented 5 years ago

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 é:

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. :smiley:

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

bjverde commented 4 years ago

Lista de FrameWork em pt-br semelhantes do FormDin, todos foram encontrados no grupo PHP-Brasil do Facebook

bjverde commented 4 years ago

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.

bjverde commented 4 years ago

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 :smile:

bjverde commented 11 months ago

anatomy-of-an-html-element

https://developer.mozilla.org/en-US/docs/Glossary/Element