Escolar Documentos
Profissional Documentos
Cultura Documentos
Congura c ao
Fundamentos
Estudo de caso
12 de agosto de 2011
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Conte udo
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
O que e um framework?
Cole c ao de bibliotecas API - Interface de Programa c ao de Aplicativos Funcionalidades gen ericas customiz aveis
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
O que e um framework?
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
O que e um framework?
Invers ao de controle Comportamento padr ao Extensibilidade N ucleo do c odigo n ao pode ser modicado 1
http://en.wikipedia.org/wiki/Software framework
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
Quando eu preciso de um framework?
Aplica c oes semelhantes: sistemas de gest ao, e-commerce, etc Aumentar o paralelismo do desenvolvimento o quanto antes Reduzir custos de manuten c ao: fatora c ao de funcionalidades
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
Apresentando o framework Yii
Framework PHP Alto-desempenho Baseado em componentes Aplica c oes Web: portais, forums, CMS, e-commerce, etc Desenvolvimento em larga escala
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
Benef cios ao utilizar o Yii
correto
Internacionaliza c ao: tradu c ao de mensagens, formatos de
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Pr e-requisitos: Yii Framework: vers ao 1.1.82 XAMPP: vers ao 1.7.4 ou WAMPP: vers ao 2.1e Passos: Descompactar o Yii no diret orio do apache (htdocs ou www) Checar os requisitos: http://localhost/yii-1.1.8/requirements/ Criar aplica c ao de teste:
Linux: yii/framework/yiic webapp teste Windows: ..\bin\php \php 5.3.5\php .exe yii \framework \yiic .php webapp teste
http://www.yiiframework.com/
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Fundamentos
Como o Yii funciona
assets: recursos publicados css images themes protected: arquivos protegidos da aplica c ao components: componentes adicionais cong: congura c ao da aplica c ao controllers: regras de neg ocio data: sql de cria c ao/congura c ao do banco de dados extensions: extens oes para o framework messages: tradu c ao de mensagens para UI models: modelo de dados runtime: arquivos tempor arios tests: scripts de teste da aplica c ao views: interface gr aca da aplica c ao
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Fundamentos
Como o Yii funciona
Conex ao com o banco de dados Criar database teste - phpMyAdmin Executar sql protected/data/schema.mysql.sql Congurar conex ao protected/cong/main.php - application components
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Fundamentos
Como o Yii funciona
Gerando c odigo com o Gii Habilitar o Gii: protected/cong/main.php - modules Denir uma senha - N ao pode ser vazia Acessar http://localhost/teste/index.php?r=gii Model Generator: tbl user CRUD Generator: User http://localhost/teste/index.php?r=user
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Fundamentos
Como o Yii funciona
Implementa o design pattern3 MVC - Model View Controller4 Amplamente utilizado em frameworks Web Separa l ogica de neg ocio da interface de usu ario Model (modelo): representa a informa c ao e regras de neg ocio View (vis ao): contem os elementos de UI como texto e campos de formul ario Controller (controlador): gerencia comunica c ao entre Model e View, cuida de valida c ao e ltragem de dados
3 4
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Fundamentos
Como o Yii funciona
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Fundamentos
Como o Yii funciona
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Fundamentos
Como o Yii funciona
1. requisi c ao ` a URL aciona index.php. 2. cria c ao da aplica c ao 3. informa c oes da requisi c ao 4. controlador (PostController) e a c ao 5. instancia e aciona a c ao (actionShow) 6. carrega post (ID=1) em modelo (Post) 7. a c ao carrega view (show) com o modelo 8. view exibe atributos do modelo 9. view carrega widgets necess arios 10. view e inserida em um layout 11. a c ao envia renderiza c ao ao usu ario
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Fundamentos
MVC
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Cadastrar colaboradores da empresa Cadastrar projetos, cujo respons avel deve ser um colaborador
cadastrado
Cadastrar atividades gerais, que s ao usualmente utilizadas nos
projetos
Apropriar esfor co realizado em uma atividade por um
http://en.wikipedia.org/wiki/Use case
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
empresa para que eu tenha os registros de todos os funcion arios que j a passaram pela mesma
Como gerente, preciso administrar os projetos que realizo para
durante um per odo de tempo com uma dedica c ao di aria para dimensionar o tamanho da minha equipe ao longo do projeto
6
http://en.wikipedia.org/wiki/User story
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Importa c ao do banco de dados7 : phpMyAdmin Cria c ao da aplica c ao: yiic Alterar nome da aplica c ao: cong/main.php Congura c ao do banco de dados: cong/main.php Habilita c ao do Gii: cong/main.php Gerar modelos e CRUDs: Gii Alterar menu: views/layouts/main.php Proteger acesso via login menu: propriedade visible controladores: accessRules
http://homepages.dcc.ufmg.br/igor/classes/yiiframework/gestao horas.sql
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Alterar o template utilizado pelo Gii Editar o arquivo yii/framework/gii/generators/crud/templates/default/controller.php Outras possibilidades: Extender o comportamento do gerador de c odigo Copiar o template atual para protected/gii/templates/safe/ e fazer as altera c oes
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Corrigir r otulos: attributeLabels nos modelos Corrigir textos O Yii gera texto padr ao para os formul arios (e.g. Create Colaboradors) Tal texto pode ser alterado nas p aginas (admin.php, form.php, create.php, etc) de cada modelo: views/<nomeDoModelo>/<nomeDaVis ao>.php
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
responsavel idColaborador
Substituir $form->textField(...) para
modelo Projeto
Editar form.php para utilizar o m etodo criado
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Incluir no form.php o link para a janela Instanciar componente CJuiDialog: form.php Criar JS para tratar click no link: form.php Alterar controlador para tratar chamada Ajax:
NomeDoControladorController.php
Exerc cio para pr oxima aula: Atualizar o drowpDownList ao
fechar a janela
http://www.yiiframework.com/wiki/145/cjuidialog-for-create-new-model
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
A linguagem padr ao do Yii e o Ingl es Para mudar para o portugu es devemos Editar as congura c oes da aplica c ao: cong/main.php Incluir atributo language=>pt no primeiro n vel do arranjo (e.g. logo ap os a propriedade name) Nem todas as mensagens ser ao traduzidas, verique se as
mesmas est ao sendo exibidas atrav es da fun c ao Yii::t (e.g. <h1><?=Yii::t(app,Contact Us)?></h1> ao inv es de <h1>Contact Us</h1> na view site/contact.php)
Crie a pasta pt dentro de protected/messages Crie nessa pasta o arquivo app.php
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
todos os modelos
Traduzir as vis oes para portugu es Utilizar o CJuiDialog para o campo Equipe no modelo
Colaborador (semelhante ao que foi feito com CategoriaAtividade e Atividade) Esconder chaves prim arias de todos os modelos
Alterar as tabelas no banco de dados para que as chaves
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
projeto.nome=>Projeto)
alterar atributo utilizado nas vis oes (e.g.
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
adaptando o CGridView: incluir atributo no modelo (e.g. Alocacao.php: public $projetoNome;) alterar regra da busca (m etodo rules) para incluir o atributo (e.g. trocar projeto IdProjeto para projetoNome) alterar m etodo search para incluir relacionamento criteria > with = array ( projeto ); criteria > together = true ; . . . criteria > compare ( projeto .nome ,this->projetoNome, true);
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
adaptando o CGridView: alterar par ametros do widget CGridView //projeto.nome, array( name=>projetoNome, value=>data > projeto > nome , type=>text, header=>Projeto, ),
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
<b><?php echo CHtml::encode($data->getAttributeLabel (dataInicial)); ?>:</b> <?php echo CHtml::encode(Yii::app()->dateFormatter-> formatDateTime($data->dataInicial,medium,null)); ?><br />
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
<div class="row <?php echo $form->labelEx($model,dataInicial); ?> <?php $this->widget(zii.widgets.jui.CJuiDatePicker, array(name=>dataInicial, model=>$model, attribute=>dataInicial, value=>$model->dataInicial, options=>array(dateFormat=>dd/mm/yy), ));?> <?php echo $form->error(model , dataInicial ); ? > </div>
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
public function beforeSave() { if ($this->dataInicial == ) $this->setAttribute(dataInicial, null); else $this->dataInicial=implode(-,array reverse( explode(/,$this->dataInicial))); if ($this->dataFinal == ) $this->setAttribute(dataFinal, null); else $this->dataFinal=implode(-,array reverse( explode(/,$this->dataFinal))); return parent::beforeSave(); }
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
public function afterFind() { if(!is null($this->dataInicial)) $this->dataInicial=Yii::app()->dateFormatter-> ($this->dataInicial,medium,null); if(!is null($this->dataFinal)) $this->dataFinal=Yii::app()->dateFormatter-> ($this->dataFinal,medium,null); return parent::afterFind(); }
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Criar esqueleto da aplica c ao: yiic Congurar a aplica c ao: cong/main.php Criar um modelo para cada entidade do banco de dados Criar um controlador para cada tipo de requisi c ao do usu ario Implementar a c oes e suas respectivas vis oes Congurar ltros para as a c oes dos controladores Congurar internacionaliza c ao e mapear mensagens Preparar a aplica c ao para o ambiente de produ c ao:
http://www.yiiframework.com/doc/guide/ 1.1/en/topics.performance
Vis ao Geral
Congura c ao
Fundamentos
Estudo de caso
Refer encias I