ZF Básico - 5. Modelo

22
1 Zend Framework Zend Framework Parte V: Ampliando a Parte V: Ampliando a primeira aplicação – MVC primeira aplicação – MVC

description

Mini-curso sobre Zend Framework - Parte 5

Transcript of ZF Básico - 5. Modelo

Page 1: ZF Básico - 5. Modelo

11

Zend FrameworkZend Framework

Parte V: Ampliando a primeira Parte V: Ampliando a primeira aplicação – MVCaplicação – MVC

Page 2: ZF Básico - 5. Modelo

22

O Banco de DadosO Banco de Dados

Agora que o controle da aplicação já Agora que o controle da aplicação já está devidamente separado da visão, está devidamente separado da visão, é hora de criar o modelo, também é hora de criar o modelo, também chamado de regras de negócio.chamado de regras de negócio.

O ponto de partida é o banco de O ponto de partida é o banco de dados que definirá as regras de dados que definirá as regras de negócio da aplicação.negócio da aplicação.

Será usada a classe Zend_Db_table Será usada a classe Zend_Db_table para operações CRUD a partir de para operações CRUD a partir de tabelas.tabelas.

Page 3: ZF Básico - 5. Modelo

33

ConfiguraçãoConfiguração

Para usar Zend_Db_Table precisamos Para usar Zend_Db_Table precisamos nos conectar primeiro a um banco de nos conectar primeiro a um banco de dados, fornecendo o usuário e senha.dados, fornecendo o usuário e senha.

Para automatizar essa tarefa, Para automatizar essa tarefa, usaremos um arquivo de configuração usaremos um arquivo de configuração que contenha essa informação.que contenha essa informação.

O ZF provê o Zend_Config para criar O ZF provê o Zend_Config para criar um objeto flexível que contenha os um objeto flexível que contenha os dados do arquivo de configuração.dados do arquivo de configuração.

Page 4: ZF Básico - 5. Modelo

44

ConfiguraçãoConfiguração

./application/config.ini./application/config.ini

Page 5: ZF Básico - 5. Modelo

55

ConfiguraçãoConfiguração Editar o bootstrap (index.php) e adicionar depois Editar o bootstrap (index.php) e adicionar depois

de Zend_Loader::registerAutoload();:de Zend_Loader::registerAutoload();:

Page 6: ZF Básico - 5. Modelo

66

ConfiguraçãoConfiguração Editar o bootstrap (index.php) e adicionar depois Editar o bootstrap (index.php) e adicionar depois

de $registry->set('config', $config);:de $registry->set('config', $config);:

Page 7: ZF Básico - 5. Modelo

77

Criando a TabelaCriando a Tabela

Instale o DBDesigner4. Depois, use-o para Instale o DBDesigner4. Depois, use-o para criar e publicar a tabela abaixo:criar e publicar a tabela abaixo:

CampoCampo TipoTipo Nulo?Nulo? ObsObs

idid IntegerInteger NãoNão Primary key,Autoincrement

artistaartista Varchar(100)Varchar(100) NãoNão

titulotitulo Varchar(100)Varchar(100) NãoNão

Page 8: ZF Básico - 5. Modelo

88

Inserindo Dados na TabelaInserindo Dados na Tabela

Ainda com o DBDesigner4, execute a Ainda com o DBDesigner4, execute a seguinte query:seguinte query:

Page 9: ZF Básico - 5. Modelo

99

O ModeloO Modelo Zend_Db_Table é uma classe abstrata. Zend_Db_Table é uma classe abstrata.

Assim teremos que derivar nossa própria Assim teremos que derivar nossa própria classe a partir dela.classe a partir dela.

Como nossa tabela se chama ‘albums’, Como nossa tabela se chama ‘albums’, nossa classe manterá a coerência e chamar-nossa classe manterá a coerência e chamar-se-á ‘Albums’.se-á ‘Albums’.

Em nossa classe definiremos uma Em nossa classe definiremos uma propriedade protegida chamada $_name propriedade protegida chamada $_name que armazenará o nome da tabela com a que armazenará o nome da tabela com a qual a classe trabalhará.qual a classe trabalhará.

Zend_Db_Table espera que a chave Zend_Db_Table espera que a chave primária de sua tabela seja chamada ‘id’ e primária de sua tabela seja chamada ‘id’ e que seja um campo de auto-incremento.que seja um campo de auto-incremento.

Page 10: ZF Básico - 5. Modelo

1010

O ModeloO Modelo

./application/models/Albums.php./application/models/Albums.php

Page 11: ZF Básico - 5. Modelo

1111

Listando os ÁlbunsListando os Álbuns Editar o método indexAction da classe Editar o método indexAction da classe

IndexController.IndexController. O método fetchAll() retorna um objeto O método fetchAll() retorna um objeto

Zend_Db_Table_Rowset que nos permite Zend_Db_Table_Rowset que nos permite iteração sobre as linhas retornadas da tabela.iteração sobre as linhas retornadas da tabela.

Page 12: ZF Básico - 5. Modelo

1212

Listando os ÁlbunsListando os Álbuns Colocando o conteúdo específico no arquivo de visão: Colocando o conteúdo específico no arquivo de visão:

./application/views/scripts/index/index.phtml./application/views/scripts/index/index.phtml

Page 13: ZF Básico - 5. Modelo

1313

Adicionando ÁlbunsAdicionando Álbuns

Iremos usar o componente Iremos usar o componente Zend_Form para criar um formulário Zend_Form para criar um formulário com validação das entradas.com validação das entradas.

Nossa classe de formulário ficará na Nossa classe de formulário ficará na camada de modelo e será uma camada de modelo e será uma extensão da Zend_Form.extensão da Zend_Form.

Chamaremos a classe de Chamaremos a classe de AlbumForm.AlbumForm.

Page 14: ZF Básico - 5. Modelo

1414

Adicionando ÁlbunsAdicionando Álbuns

./application/models/AlbumForm.php./application/models/AlbumForm.php

Page 15: ZF Básico - 5. Modelo

1515

Adicionando ÁlbunsAdicionando Álbuns

Editando o IndexController.phpEditando o IndexController.php

Page 16: ZF Básico - 5. Modelo

1616

Adicionando ÁlbunsAdicionando Álbuns

Editando o add.phtmlEditando o add.phtml

Page 17: ZF Básico - 5. Modelo

1717

Editando ÁlbunsEditando Álbuns

Editando o IndexController.phpEditando o IndexController.php

Page 18: ZF Básico - 5. Modelo

1818

Editando ÁlbunsEditando Álbuns

Editando o edit.phtmlEditando o edit.phtml

Page 19: ZF Básico - 5. Modelo

1919

Removendo ÁlbunsRemovendo Álbuns

É possível remover um registro É possível remover um registro diretamente ao clicar no link, mas diretamente ao clicar no link, mas essa não é uma boa prática.essa não é uma boa prática.

Devemos recuperar a informação do Devemos recuperar a informação do registro a ser removido e exigir uma registro a ser removido e exigir uma confirmação do usuário.confirmação do usuário.

O registro só será removido caso o O registro só será removido caso o usuário confirme afirmativamente a usuário confirme afirmativamente a remoção.remoção.

Page 20: ZF Básico - 5. Modelo

2020

Removendo ÁlbunsRemovendo Álbuns

Editando o IndexController.phpEditando o IndexController.php

Page 21: ZF Básico - 5. Modelo

2121

Removendo ÁlbunsRemovendo Álbuns

Editando o delete.phtmlEditando o delete.phtml

Page 22: ZF Básico - 5. Modelo

2222

Teste a aplicaçãoTeste a aplicação

Dúvidas e conclusões da prática.Dúvidas e conclusões da prática. Próxima prática: adicionando um Próxima prática: adicionando um

autenticador de usuário para a autenticador de usuário para a aplicação.aplicação.