Planejamento no Yii

Quais passos devemos seguir para atingir o nosso objetivo na construção do sistema GerPro?

  • Criar as tabelas no banco de dados
  • Criar as classes do modelo para permitir que o aplicativo interaja com as tabelas do banco de dados
  • Criar as classes controladoras, onde colocaremos as funcionalidades:

o   Criar novos projetos

o   Recuperar lista de projetos existentes

o   Atualizar dados do projeto

o   Excluir projetos

  • Criar apresentação que terá:

o   Tela para criação de novos projetos

o   Tela com lista de projetos existentes

o   Tela de edição de projetos existentes

o   Adicionar um botão de exclusão de projetos na listagem

 

Com base no modelo que vimos anteriormente vamos criar a seguinte tabela, mas vamos utilizar o Migrate do Yii para isso:

CREATE TABLE IF NOT EXISTS tbl_project(

id int(11) NOT NULL AUTO_INCREMENT,

name varchar(255) NOT NULL,

description text NOT NULL,

create_time datetime DEFAULT NULL,

create_user_id int(11) DEFAULT NULL,

update_time datetime DEFAULT NULL,

update_user_id int(11) DEFAULT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT AUTO_INCREMENT=1 ;

 

Migração de banco de dados no Yii

Além de fazer o controle de versão do código (SVN, GIT) também é uma boa prática fazer o controle de modificações da base de dados. Para isso o Yii vem com uma ferramenta de migração de dados.

  1. Vá até o console (CMD), no diretórios do projeto GerPro: c:/wamp/www/gerpro/protected
  2. Digite: yiic migrate create create_project_table
  3. Digite: yes

Um arquivo será criado em: C:\wamp\www\gerpro\protected\migrations\m140902_125716_create_project_table.php

Abra o arquivo em um editor e modifique-o da seguinte forma:

 

public function up(){

$this->createTable(‘tbl_project’, array(

‘id’ => ‘pk’,

‘name’ => ‘string NOT NULL’,

‘description’ => ‘text NOT NULL’,

‘create_time’ => ‘datetime DEFAULT NULL’,

‘create_user_id’ => ‘int(11) DEFAULT NULL’,

‘update_time’ => ‘datetime DEFAULT NULL’,

‘update_user_id’ => ‘int(11) DEFAULT NULL’,

));

}

 

public function down(){

$this->dropTable(‘tbl_project’);

}

O método Up conterá as mudanças que queremos fazer em nosso banco de dados. E o método Down irá reverter estas mudanças para uma versão anterior.

Para executar a migração volte no console (CMD) com o cursor na pasta protected, digite: Yiic migrate

Depois de digitar ‘yes’ e pressionar enter deverá ser exibida a mensagem: Migrate up successfully.

Pronto nossa tabela esta criada no banco de dados, e pronta para ser utilizada.

 

Criação da class AR (Active Record)

  1. Acesse o Gii (como visto nos posts de introdução).
  2. Clicar em Model Generator
  3. Em Table Name: tbl_project
  4. Em Model Class: Project
  5. Clique em preview e depois em generate
  6. O arquivo Project.php será criado na pasta models

 

Criar um CRUD com o gerador de CRUD do Yii

  1. Acesse o Gii
  2. Clicar em Crud Generator
  3. Clicar em preview e depois em generate
  4. Os arquivos serão criados de acordo com a listagem exibida
  5. Clique em Try It Now para testar a aplicação criada

Testando a aplicação

  1. Clique em Create Project no canto direito da tela (você será direcionado para tela de login)
  2. Entre com usuário: admin e senha: admin

Veja que a tela de Cadastro de Projetos já veio com todos os campos especificados na tabela tbl_projetos e que os campos marcados como not null estão como obrigatórios no formulário.

Preencha os dois campos obrigatórios:

Name: Projeto Teste

Description: Descrição do projeto teste

Clique em criate.

Se você for direcionado para a tela View Project #1, tudo estará funcionando bem.

* Todo o conteúdo deste post é uma interpretação minha ou uma sequencia de passos tirados do livro Web Application Development With Yii and PHP. Que pode ser adquirido pelo link: http://www.amazon.com/Web-Application-Development-Yii-PHP/dp/1849518726

Escrevo esta sequencia de posts para documentar os estudos que realizo sobre este framework e ao mesmo tempo partilhar e trocar conhecimento com outros desenvolvedores.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *