Download - ZF Básico - 5. Modelo
![Page 1: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/4.jpg)
44
ConfiguraçãoConfiguração
./application/config.ini./application/config.ini
![Page 5: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/10.jpg)
1010
O ModeloO Modelo
./application/models/Albums.php./application/models/Albums.php
![Page 11: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/14.jpg)
1414
Adicionando ÁlbunsAdicionando Álbuns
./application/models/AlbumForm.php./application/models/AlbumForm.php
![Page 15: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/15.jpg)
1515
Adicionando ÁlbunsAdicionando Álbuns
Editando o IndexController.phpEditando o IndexController.php
![Page 16: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/16.jpg)
1616
Adicionando ÁlbunsAdicionando Álbuns
Editando o add.phtmlEditando o add.phtml
![Page 17: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/17.jpg)
1717
Editando ÁlbunsEditando Álbuns
Editando o IndexController.phpEditando o IndexController.php
![Page 18: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/18.jpg)
1818
Editando ÁlbunsEditando Álbuns
Editando o edit.phtmlEditando o edit.phtml
![Page 19: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/20.jpg)
2020
Removendo ÁlbunsRemovendo Álbuns
Editando o IndexController.phpEditando o IndexController.php
![Page 21: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/21.jpg)
2121
Removendo ÁlbunsRemovendo Álbuns
Editando o delete.phtmlEditando o delete.phtml
![Page 22: ZF Básico - 5. Modelo](https://reader033.vdocuments.mx/reader033/viewer/2022061223/54c543744a7959b7108b46be/html5/thumbnails/22.jpg)
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.