Upload
marcos-bezerra
View
1.510
Download
3
Embed Size (px)
DESCRIPTION
Mini-curso sobre Zend Framework - Parte 5
Citation preview
11
Zend FrameworkZend Framework
Parte V: Ampliando a primeira Parte V: Ampliando a primeira aplicação – MVCaplicação – MVC
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.
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.
44
ConfiguraçãoConfiguração
./application/config.ini./application/config.ini
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();:
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);:
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
88
Inserindo Dados na TabelaInserindo Dados na Tabela
Ainda com o DBDesigner4, execute a Ainda com o DBDesigner4, execute a seguinte query:seguinte query:
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.
1010
O ModeloO Modelo
./application/models/Albums.php./application/models/Albums.php
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.
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
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.
1414
Adicionando ÁlbunsAdicionando Álbuns
./application/models/AlbumForm.php./application/models/AlbumForm.php
1515
Adicionando ÁlbunsAdicionando Álbuns
Editando o IndexController.phpEditando o IndexController.php
1616
Adicionando ÁlbunsAdicionando Álbuns
Editando o add.phtmlEditando o add.phtml
1717
Editando ÁlbunsEditando Álbuns
Editando o IndexController.phpEditando o IndexController.php
1818
Editando ÁlbunsEditando Álbuns
Editando o edit.phtmlEditando o edit.phtml
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.
2020
Removendo ÁlbunsRemovendo Álbuns
Editando o IndexController.phpEditando o IndexController.php
2121
Removendo ÁlbunsRemovendo Álbuns
Editando o delete.phtmlEditando o delete.phtml
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.