Ir para conteúdo


Foto

CRUD Abstract MVC


  • Por favor, faça o login para responder
19 respostas neste tópico

#1 Fabio Jr. Policeno

Fabio Jr. Policeno

    Member Avançado

  • Expert User
  • 2933 posts
  • LocationCuritiba - PR

Postado 29 September 2012 - 16:19

Boa tarde pessoal,

Gostaria de compartilhar um CRUD especial  ;D

Este CRUD está em MVC tanto na parte do Ext JS quanto no PHP(nativo) e o melhor é que está utilizando classes abstratas

Procurei aplicar as melhores práticas possíveis, deixar o código mais enxuto/curto e prático possível, simplificando mas buscando abstrair ao máximo para obter produtividade no desenvolvimento.

Este foi feito em PHP, mas é claro, a parte do Ext JS pode ser aplicada perfeitamente para outras linguagens de backend, necessitando alterar somente as url's no AbstractProxy e pronto.

Características do CRUD:
- Versão free mais recente do Ext JS (4.1.1a)
- Acompanha scripts para empacotar o projeto para a produção
- Parte do PHP totalmente abstrata
- Parte do Ext JS totalmente abstrata
- Utilizando as melhores práticas possíveis recomendadas pela Sencha
- Layout amigável
- Acompanha menu, abertura dos módulos em abas
- Acompanha ux Ext.ux.Alert

Segue abaixo o exemplo de alguns códigos:
model(PHP)
<?php
require_once 'AbstractModel.php';

class Cliente extends AbstractModel{
	public $table = 'cliente';
}
?>

controller(php)
<?php
require_once '../model/Cliente.php';
require_once 'AbstractController.php';

class ClienteController extends AbstractController {}
new ClienteController(new Cliente());

controller(Ext JS)
Ext.define('Simple.controller.Cliente', {
	extend: 'Abstracts.Controller',
	module: 'cliente',
    models: ['Cliente'],
    stores: ['Cliente'],
    views : [
    	'cliente.Module',
    	'cliente.List',
    	'cliente.Form'
    ]
});

model (Ext JS)
Ext.define('Simple.model.Cliente', {
	extend: 'Ext.data.Model',
	proxy : {
		type  : 'abstractproxy',
		module: 'cliente'
	},
	fields: [
		{name: 'id', type: 'int'},
		'nome',
		'endereco'
	]
});

store (Ext JS)
Ext.define('Simple.store.Cliente', {
	extend: 'Ext.data.Store',
    model : 'Simple.model.Cliente'
});

form (Ext JS)
Ext.define('Simple.view.cliente.Form', {
    extend: 'Abstracts.Form',
    alias : 'widget.clienteform',
    items : [{
		name	  : 'id',
		fieldLabel: 'Id',
		disabled  : true
	},{
		name	  : 'nome',
		fieldLabel: 'Nome',
		maxLength : 100
	},{
		name	  : 'endereco',
		fieldLabel: 'Endereco',
		maxLength : 100
	}]
});

list (Ext JS)
Ext.define('Simple.view.cliente.List', {
    extend : 'Abstracts.List',
    alias  : 'widget.clientelist',
    store  : 'Cliente',
	columns: [{
		header	 : 'Id',
		dataIndex: 'id'
	},{
		header	 : 'Nome',
		dataIndex: 'nome'
	},{
		header	 : 'Endereco',
		dataIndex: 'endereco'
	}]
});

Achei interessante compartilhar isso para o pessoal olhar para o Ext JS com relação a produtividade e organização e de desempenho que pode se chegar com este fantástico framework e já ir buscando conhecimentos avançados dentro desta tecnologia.

Exemplo online: http://policenosistemas.com.br/Simple
Download: http://www.4shared.c...iBI/Simple.html

Sugestões e melhorias são sempre muito bem vindas.

Abraços!
Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas

#2 Fabyo

Fabyo

    Member Avançado

  • Administrators
  • 678 posts
  • LocationSão Paulo

Postado 29 September 2012 - 17:23

Parabens Fabio

otimo post

#3 Link

Link

    Member Avançado

  • Membros
  • PipPipPip
  • 754 posts

Postado 29 September 2012 - 18:04

Muito Bom Fabio, parabéns!

Eu executei o seu exemplo, achei muito legal aquela mensagem que aparece como um Flash na parte superior, como eu faço para criar essas mensagens e faze-las aparecer como vc fez?

Abraços

#4 Fabio Jr. Policeno

Fabio Jr. Policeno

    Member Avançado

  • Expert User
  • 2933 posts
  • LocationCuritiba - PR

Postado 30 September 2012 - 13:01

http://forum.extjs.c...hp?topic=6836.0
Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas

#5 Link

Link

    Member Avançado

  • Membros
  • PipPipPip
  • 754 posts

Postado 30 September 2012 - 15:52

http://forum.extjs.c...hp?topic=6836.0


Olá Fabio tudo bem?

Olha, deve ser fácil conseguir esse efeito, mas eu não consegui o mesmo resultado.  Tentei entender o exemplo http://docs.sencha.c...ox/msg-box.html mas deve estar faltando alguma coisa.

Mesmo assim valeu pela dica.

Abraços

#6 kalilkelvin

kalilkelvin

    Novato

  • Membros
  • PipPip
  • 17 posts

Postado 01 October 2012 - 09:09

Ótima contribuição.. parabéns..

#7 betolima

betolima

    Novato

  • Membros
  • PipPip
  • 19 posts

Postado 01 October 2012 - 09:42

Fábio, parabéns mais uma vez.
Cara seguinte; este diretório abstracts contém alguns arquivos que ao meu ver podem ser reutilizados, ou melhor foram definidos exatamente com este propósito. Estou certo?
Pergunta: posso em algum momento sobrescrever algum deles?
Ex: em um módulo tal do meu sistema não quero usar reader do tipo json e quero habilitar writeAllFields.... Seria só um exemplo...
Grato.

#8 Fabio Jr. Policeno

Fabio Jr. Policeno

    Member Avançado

  • Expert User
  • 2933 posts
  • LocationCuritiba - PR

Postado 01 October 2012 - 09:55

Obrigado a todos,

Sim Beto, qualquer coisa pode ser sobrescrita, esta é a idéia, vc tem autonomia de sobrescrever da melhor forma que achar, sobrescrever ao utilizar o proxy, ou criar um novo "AbstractProxy" para coisas específicas.
Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas

#9 betolima

betolima

    Novato

  • Membros
  • PipPip
  • 19 posts

Postado 01 October 2012 - 10:07

certinho...valeu.

#10 betolima

betolima

    Novato

  • Membros
  • PipPip
  • 19 posts

Postado 01 October 2012 - 11:01

Fábio, desculpe voltar aqui mas muitos ainda continuarão com dúvidas e com isso gerará perguntas hehehe, faz parte.
Estava tentando modificar nomes e alguns textos só pra testar mas aí quando iria dar F5 nada mudava.
Notei que ao invés de chamar app.js ele está chamando app-all.js
Você poderia explicar um pouco mais sobre isso?
Porque pelo que percebi ele empacota tudo num único arquivo que seria digamos entregue para o cliente final. Isso?
Continuando neste pensamento, caso entregar para o cliente o app-all, quais diretorios poderiam ser removidos do projeto?

Valeu

#11 Fabio Jr. Policeno

Fabio Jr. Policeno

    Member Avançado

  • Expert User
  • 2933 posts
  • LocationCuritiba - PR

Postado 01 October 2012 - 11:11

Para vc fazer alguma alteração, deve mudar para o modo de desenvolvimento, trocando ext.js por ext-dev.js e app-all.js por app.js, após alterar, no momento de producao, execute os scripts para empacotar que estão em /build, tendo instalado o SDK da Sencha. Tudo isso está bem explicado na documentação, e também aqui no fórum, eu mesmo descrevi como funciona esta parte entre desenvolvimento e produção. A estrutura do projeto para producao fica assim (anexo)
Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas

#12 betolima

betolima

    Novato

  • Membros
  • PipPip
  • 19 posts

Postado 01 October 2012 - 14:16

obrigado mais uma vez Fábio

#13 Link

Link

    Member Avançado

  • Membros
  • PipPipPip
  • 754 posts

Postado 02 October 2012 - 16:09

Olá Fabio,

    Eu entendi o exemplo da Sencha e logo em seguida vi o seu exemplo do Alert.  O seu código ficou mais limpo e mais apresentável. Parabéns!!!!

#14 Fabio Jr. Policeno

Fabio Jr. Policeno

    Member Avançado

  • Expert User
  • 2933 posts
  • LocationCuritiba - PR

Postado 02 October 2012 - 16:34

Obrigado! ;)
Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas

#15 betolima

betolima

    Novato

  • Membros
  • PipPip
  • 19 posts

Postado 02 October 2012 - 16:49

Fabio por acaso você não teria uma demonstração deste seu exemplo integrado com algum framework php?
sei lá, zend, cake, ou qualquer que seja....
valeu


#16 Fabio Jr. Policeno

Fabio Jr. Policeno

    Member Avançado

  • Expert User
  • 2933 posts
  • LocationCuritiba - PR

Postado 02 October 2012 - 17:12

Tenho pra Yii, Java + Spring + Hibernate,... é só escolher  ;D
Essas bases acompanham backend: https://www.facebook...tegory_id=15205 ;)
Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas

#17 betolima

betolima

    Novato

  • Membros
  • PipPip
  • 19 posts

Postado 02 October 2012 - 17:20

hehehe, tudo bem Fabio....
valeu

#18 amarin

amarin

    Iniciante

  • Membros
  • Pip
  • 5 posts

Postado 07 November 2012 - 13:28

Boa tarde Fabio, eu coloquei o seu exemplo na kinghost, para testar tudo tava funcionando até que comecei a nao acessar mais o site...e veja a resposta do suporte.

Seu IP foi bloqueado devido ao grande número de conexões simultâneas realizadas para o ambiente onde seu domínio encontra-se hospedado. Como a abertura de múltiplas conexões simultâneas pode ser um indício de ataque Denial of Service (DoS) ao domínio em questão, e o firewall funciona em nível de rede (sem análise do conteúdo do pacote), o IP é bloqueado pelo nosso sistema de intrusão.

Sendo assim, oriento-lhe a verificar com seu programador formas de otimizar as conexões HTTP do domínio em questão, a fim de garantir que conexões que não estejam em uso sejam devidamente encerradas, a fim de que novos episódios como este não ocorram.

Informo-lhe, por fim, que o IP em questão já encontra-se liberado. Favor verificar.

Dúvidas adicionais, permanecemos à disposição.


#19 Fabio Jr. Policeno

Fabio Jr. Policeno

    Member Avançado

  • Expert User
  • 2933 posts
  • LocationCuritiba - PR

Postado 07 November 2012 - 13:57

Olá amarin, dê uma olhada no código, provavelmente eu devo ter esquecido de tratar o fechamento correto das conexoes..
Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas

#20 denisdemais

denisdemais

    Iniciante

  • Membros
  • Pip
  • 3 posts

Postado 09 March 2016 - 11:34

parabéns. ficou legal.






0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos