EXTJS - Comunidade brasileira da biblioteca EXTJS
Abril 20, 2014, 12:51:55 *
Bem-vindo, Visitante. Por favor faça o Login ou Registro.
Perdeu o seu email de activação?

Login com nome de usuário, senha e duração da sessão
Notícias: Quais exemplos com ExtJS ou Sencha Touch você gostaria de ver? [MAIS INFORMAÇÕES]
 
   Home   Ajuda Pesquisa Login Registrar  
Faça uma doação ajude nossa comunidade a crescer
Páginas: [1] 2
  Imprimir  
Autor Tópico: CRUD Abstract MVC  (Lida 3694 vezes)
0 Membros e 1 Visitante estão vendo este tópico.
Fabio Jr. Policeno
Masters
Avançado
**********

Karma: +60/-1
Offline Offline

Sexo: Masculino
Mensagens: 2910


Deus é Fiel!

fabiojpoli@hotmail.com
Ver Perfil WWW Email
« : Setembro 29, 2012, 16:19:50 »

Boa tarde pessoal,

Gostaria de compartilhar um CRUD especial  Grin

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)
Código:
<?php
require_once 'AbstractModel.php';

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

controller(php)
Código:
<?php
require_once '../model/Cliente.php';
require_once 
'AbstractController.php';

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

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

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

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

form (Ext JS)
Código:
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)
Código:
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.com/get/XcGpciBI/Simple.html

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

Abraços!
Registrado

Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas
Fabyo
Administrator
Intermediario
**********

Karma: +11/-2
Offline Offline

Sexo: Masculino
Mensagens: 667


Fabyo PHP


Ver Perfil WWW Email
« Responder #1 : Setembro 29, 2012, 17:23:21 »

Parabens Fabio

otimo post
Registrado
Link
Intermediario
***

Karma: +2/-1
Offline Offline

Sexo: Masculino
Mensagens: 545


Ver Perfil
« Responder #2 : Setembro 29, 2012, 18:04:25 »

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
Registrado
Fabio Jr. Policeno
Masters
Avançado
**********

Karma: +60/-1
Offline Offline

Sexo: Masculino
Mensagens: 2910


Deus é Fiel!

fabiojpoli@hotmail.com
Ver Perfil WWW Email
« Responder #3 : Setembro 30, 2012, 13:01:49 »

http://www.extjs.com.br/forum/index.php?topic=6836.0
Registrado

Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas
Link
Intermediario
***

Karma: +2/-1
Offline Offline

Sexo: Masculino
Mensagens: 545


Ver Perfil
« Responder #4 : Setembro 30, 2012, 15:52:35 »


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.com/ext-js/4-1/#!/example/message-box/msg-box.html mas deve estar faltando alguma coisa.

Mesmo assim valeu pela dica.

Abraços
Registrado
kalilkelvin
Iniciante
*

Karma: +0/-0
Offline Offline

Mensagens: 17


Ver Perfil Email
« Responder #5 : Outubro 01, 2012, 09:09:18 »

Ótima contribuição.. parabéns..
Registrado
betolima
Iniciante
*

Karma: +0/-0
Offline Offline

Mensagens: 19



Ver Perfil
« Responder #6 : Outubro 01, 2012, 09:42:32 »

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.
Registrado
Fabio Jr. Policeno
Masters
Avançado
**********

Karma: +60/-1
Offline Offline

Sexo: Masculino
Mensagens: 2910


Deus é Fiel!

fabiojpoli@hotmail.com
Ver Perfil WWW Email
« Responder #7 : Outubro 01, 2012, 09:55:13 »

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

Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas
betolima
Iniciante
*

Karma: +0/-0
Offline Offline

Mensagens: 19



Ver Perfil
« Responder #8 : Outubro 01, 2012, 10:07:17 »

certinho...valeu.
Registrado
betolima
Iniciante
*

Karma: +0/-0
Offline Offline

Mensagens: 19



Ver Perfil
« Responder #9 : Outubro 01, 2012, 11:01:57 »

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
Registrado
Fabio Jr. Policeno
Masters
Avançado
**********

Karma: +60/-1
Offline Offline

Sexo: Masculino
Mensagens: 2910


Deus é Fiel!

fabiojpoli@hotmail.com
Ver Perfil WWW Email
« Responder #10 : Outubro 01, 2012, 11:11:50 »

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

Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas
betolima
Iniciante
*

Karma: +0/-0
Offline Offline

Mensagens: 19



Ver Perfil
« Responder #11 : Outubro 01, 2012, 14:16:45 »

obrigado mais uma vez Fábio
Registrado
Link
Intermediario
***

Karma: +2/-1
Offline Offline

Sexo: Masculino
Mensagens: 545


Ver Perfil
« Responder #12 : Outubro 02, 2012, 16:09:55 »

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!!!!
Registrado
Fabio Jr. Policeno
Masters
Avançado
**********

Karma: +60/-1
Offline Offline

Sexo: Masculino
Mensagens: 2910


Deus é Fiel!

fabiojpoli@hotmail.com
Ver Perfil WWW Email
« Responder #13 : Outubro 02, 2012, 16:34:58 »

Obrigado! Wink
Registrado

Produtos/Serviços Ext JS
Porque dEle, por Ele, para Ele são todas as coisas
betolima
Iniciante
*

Karma: +0/-0
Offline Offline

Mensagens: 19



Ver Perfil
« Responder #14 : Outubro 02, 2012, 16:49:07 »

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
Registrado
Páginas: [1] 2
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines XHTML 1.0 Válido! CSS Válido!
Página criada em 0.35 segundos com 19 procedimentos.