SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
Tutorial Yii Framework
Yii Framework
http://www.yiiframework.com
O Guia Definitivo para o Yii
http://www.yiiframework.com/doc/guide/pt/index
Yii Class Reference
http://www.yiiframework.com/doc/api/1.0.10
Yii Class Reference - CHtml - Componentes de Interface
http://www.yiiframework.com/doc/api/CHtml
Índice
1. Instalação........................................................................................................................................2
2. Geração da Estrutura da Aplicação ................................................................................................2
3. Banco de Dados..............................................................................................................................2
4. Geração do MVC............................................................................................................................2
5. Menu...............................................................................................................................................4
6. Extensões........................................................................................................................................4
7. Labels dos Campos.........................................................................................................................4
8. Campos do Grid..............................................................................................................................5
9. Campos Obrigatórios......................................................................................................................5
Anexo I – Estrutura da Aplicação..........................................................................................................7
Anexo II – Menu multi-nível.................................................................................................................8
Anexo III – Campos do Grid .................................................................................................................9
1. Instalação
Execute o download do Yii Framework no link:
http://www.yiiframework.com/download
Copie o arquivo ZIP para o diretório “C:WWW”, descompacte e mude o nome do diretório para
”yii”.
2. Geração da Estrutura da Aplicação
Entre no “Prompt de comando” e execute os comandos abaixo para criar a estrutura da aplicação:
CD www
MD servico
CD servico
php5php wwwyiiframeworkyiic webapp wwwservico
Para testar digite a URL abaixo no browser:
http://localhost/www/servico/index.php
3. Banco de Dados
Crie um banco de dados chamado “servico” no MySQL com o SQL disponível no site.
Altere o arquivo abaixo com a configuração do MySQL mostrada:
wwwservicoprotectedconfigmain.php
'db'=>array(
'connectionString'=>'mysql:host=localhost;dbname=servico',
'username'=>'root',
'password'=>'mysql',
),
4. Geração do MVC
Entre no “Prompt de comando” e execute os comandos abaixo para criar a estrutura da aplicação:
php5php wwwyiiframeworkyiic shell
model TABELA, para gerar o MODEL de uma tabela
crud TABELA, para gerar o VIEW/CONTROLLER de uma tabela
Abaixo é mostrada a saída dos comandos de geração:
Yii Interactive Tool v1.0 (based on Yii v1.0.10)
Please type 'help' for help. Type 'exit' to quit.
>> model cidade
generate cidade.php
The following model classes are successfully generated:
cidade
If you have a 'db' database connection, you can test these models now
with:
$model=cidade::model()->find();
print_r($model);
>> crud cidade
generate CidadeController.php
mkdir E:/php/servico/protected/views/cidade
generate create.php
generate update.php
generate list.php
generate show.php
generate admin.php
generate _form.php
Crud 'cidade' has been successfully created. You may access it via:
http://hostname/path/to/index.php?r=cidade
>>
As tabelas do banco de dados cujo código deve ser gerado são:
cidade
cliente
os
osobservacao
osservico
servico
Para testar digite a URL abaixo no browser:
http://localhost/www/servico/index.php?r=cidade
5. Menu
O arquivo abaixo contém a estrutura principal da tela, inclusive o menu, compartilhado por todas as
VIEWs, e deve ser alterado conforme o código mostrado:
wwwservicoprotectedviewslayoutsmain.php
$this->widget('application.components.MainMenu',array(
'items'=>array(
array('label'=>'Home', 'url'=>array('/site/index')),
array('label'=>'Contact', 'url'=>array('/site/contact')),
array('label'=>'Cidades', 'url'=>array('/cidade/admin')),
array('label'=>'Login', 'url'=>array('/site/login'),
'visible'=>Yii::app()->user->isGuest),
array('label'=>'Logout', 'url'=>array('/site/logout'),
'visible'=>!Yii::app()->user->isGuest)
),
));
6. Extensões
O menu padrão do Yii permite apenas 1 único nível de opções. Para resolver este problemas
podemos instalar uma extensão que implementa um menu multi-nível. Basta executar o download
do link abaixo, descompactar no diretório indicado e alterar o código do script anterior para o código
mostrado no Anexo II:
http://www.yiiframework.com/extension/menu
wwwservicoprotectedextensionsmenu
7. Labels dos Campos
As descrições dos campos do banco de dados são definidos no MODEL da tabela, através da função
“attributeLabels”:
wwwservicoprotectedmodelscidade.php
public function attributeLabels()
{
return array(
'CHAVE' => 'Chave',
'NOME' => 'Nome da Cidade',
'UF' => 'UF',
'DATE_TIME' => 'Date Time',
);
8. Campos do Grid
Os campos do grid exibido no VIEW de cada tabela estão no arquivo abaixo podendo ser alterado
para exibir ícones ao invés de links bem como remover campos, como mostrado no Anexo III:
wwwservicoprotectedviewscidadeadmin.php
Além disso é necessário alterar a classe “dataGrid” do CSS como mostrado no código abaixo:
wwwservicocssmain.css
table.dataGrid
{
background: white;
border-collapse: collapse;
/* width: 100%; */
}
O diretório abaixo vai receber as imagens GIF disponíveis no site:
wwwservicothemesclassicimages
O tema “classic” deve ser configurado no arquivo de configuração:
wwwservicoprotectedviewslayoutsmain.php
'theme'=>'classic'
9. Campos Obrigatórios e Date_Time
O Yii não gera campos para digitação da chave-primária nas telas de inclusão. Assim é necessário
definir estes campos nas tabelas CIDADE e SERVICO, apenas para as inclusões. O campo
DATE_TIME pode ser removido das telas. Além disso é necessário incluir o campo CHAVE na lista
de campos a serem gravados e atribuir um valor ao campo DATE_TIME usado para gravar a data da
última alteração no registro, como mostrado abaixo:
wwwservicoprotectedviewscidade_form.php
wwwservicoprotectedviewsservico_form.php
<?php echo CHtml::errorSummary($model) ?>
<?php
if(!$update)
{
echo '<div class="simple">';
echo CHtml::activeLabelEx($model,'CHAVE',array('label'=>'Chave'));
echo
CHtml::activeTextField($model,'CHAVE',array('size'=>10,'maxlength'=>10,$r
eadonly=>''));
echo '</div>';
}
?>
wwwexemployiiprotectedmodelsCidade.php
public function safeAttributes()
{
return array(
'CHAVE', 'NOME', 'UF', 'DATE_TIME',
);
}
wwwexemployiiprotectedmodelsServico.php
public function safeAttributes()
{
return array(
'CHAVE', 'DESCRICAO', 'PRECO', 'DATE_TIME',
);
}
wwwexemployiiprotectedmodels*.php
protected function beforeSave()
{
$this->DATE_TIME = Date('y-m-d H:i:s.u');
return true;
}
Anexo I – Estrutura da Aplicação
testdrive/
index.php Script de entrada da aplicação Web
assets/ Contém arquivos de recurso publicados
css/ Contém arquivos CSS
images/ Contém arquivos de imagem
themes/ Contém temas da aplicação
protected/ Contém arquivos protegidos da aplicação
yiic Script de linha de comando yiic
yiic.bat Script de linha de comando yiic para o Windows
commands/ Contém comandos 'yiic' customizados
shell/ Contém comandos 'yiic shell' customizados
components/ Contém componentes reutilizáveis do usuário
MainMenu.php A classe widget 'MainMenu' (Menu Principal)
Identity.php A classe 'Identity' usada nas autenticações
views/ Contém arquivos de visão dos widgets
mainMenu.php O arquivo de visão do widget 'MainMenu'
config/ Contém arquivos de configurações
console.php Configuração da aplicação console
main.php Configuração da aplicação Web
controllers/ Contém arquivos das classes de controle
SiteController.php Classes de controle padrão
extensions/ Contém extensões de terceiros
messages/ Contém mensagens traduzidas
models/ Contém arquivos das classes de modelo
LoginForm.php Modelo do formulário para a ação 'login'
ContactForm.php Modelo do formulário para a ação 'contact'
runtime/ Contém arquivos gerados temporariamente
views/ Contém arquivos de visão dos controles e layouts
layouts/ Contém arquivos de visão do layout
main.php O layout padrão para todas as visões
site/ Contém arquivos de visão para o controle 'site'
contact.php Visão para a ação 'contact'
index.php Visão para a ação 'index'
login.php Visão para a ação 'login'
system/ Contém arquivos de visão do sistema
Anexo II – Menu multi-nível
<!--<div id="mainmenu">
<php
$this->widget('application.components.MainMenu',array(
'items'=>array(
array('label'=>'Home', 'url'=>array('/site/index')),
array('label'=>'Contact', 'url'=>array('/site/contact')),
array('label'=>'Cidades', 'url'=>array('/cidade/admin')),
array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Logout', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)
),
));
>
</div>--><!-- mainmenu -->
<?php $this->widget('application.extensions.menu.SMenu', array(
'menuID'=>'menu',
'delay'=>3,
'stylesheet'=>'menu_white.css',
'menu'=>array(
array('url'=>array('route'=>'site/index'),'label'=>'Home'),
array('url'=>array('route'=>'site/contact'),'label'=>'Contact'),
array('url'=>array(),'label'=>'Cadastros','visible'=>!Yii::app()->user->isGuest,
array('url'=>array('route'=>'cidade/admin'),'label'=>'Cidades'),
array('url'=>array('route'=>'cliente/admin'),'label'=>'Clientes'),
array('url'=>array('route'=>'servico/admin'),'label'=>'Serviços'),
array('url'=>array('route'=>'os/admin'),'label'=>'OS'),
array('url'=>array('route'=>'osobservacao/admin'),'label'=>'OS Observacções'),
array('url'=>array('route'=>'osservico/admin'),'label'=>'OS Serviços'),
),
array('url'=>array('route'=>'site/login'),'label'=>'Login','visible'=>Yii::app()->user->isGuest),
array('url'=>array('route'=>'site/logout'),'label'=>'Logout','visible'=>!Yii::app()->user->isGuest),
)
));
?>
Anexo III – Campos do Grid
<table class="dataGrid">
<thead>
<tr>
<th></th>
<th></th>
<th style="width:20px;"><?php echo $sort->link('CHAVE'); ?></th>
<th style="width:200px;"><?php echo $sort->link('NOME'); ?></th>
<th style="width:23px;"><?php echo $sort->link('UF'); ?></th>
</tr>
</thead>
<tbody>
<?php foreach($models as $n=>$model): ?>
<tr class="<?php echo $n%2?'even':'odd';?>">
<td>
<?php echo CHtml::imageButton('/www/servico/images/update.gif',array(
'submit'=>'index.php?r=cidade/update&id=' . $model->CHAVE,
'alt'=>'Update')); ?>
</td>
<td>
<?php echo CHtml::imageButton('/www/servico/images/delete.gif',array(
'submit'=>'',
'params'=>array('command'=>'delete','id'=>$model->CHAVE),
'confirm'=>"Excluir '{$model->CHAVE}' ?",
'alt'=>'Excluir')); ?>
</td>
<td><?php echo CHtml::link($model->CHAVE,array('show','id'=>$model->CHAVE)); ?></td>
<td><?php echo CHtml::encode($model->NOME); ?></td>
<td><?php echo CHtml::encode($model->UF); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>

Mais conteúdo relacionado

Destaque

muhammad-shoaib-rasheed-cv-updated-2 - Copy
muhammad-shoaib-rasheed-cv-updated-2 - Copymuhammad-shoaib-rasheed-cv-updated-2 - Copy
muhammad-shoaib-rasheed-cv-updated-2 - CopyMuhammad Shoaib
 
Presentazione parco delle madonie al seminario green communities part2
Presentazione parco delle madonie al seminario green communities part2Presentazione parco delle madonie al seminario green communities part2
Presentazione parco delle madonie al seminario green communities part2green communities
 
Najwa image consultant profile
Najwa image consultant profileNajwa image consultant profile
Najwa image consultant profileNajwa Aldardeer
 
Green communities by Lorenzoni
Green communities by Lorenzoni Green communities by Lorenzoni
Green communities by Lorenzoni green communities
 
1. “Sistemi di rating: il quadro internazionale e nazionale”
1. “Sistemi di rating: il quadro internazionale e nazionale” 1. “Sistemi di rating: il quadro internazionale e nazionale”
1. “Sistemi di rating: il quadro internazionale e nazionale” green communities
 
Muhammad Shoaib Rasheed CV Updated 2
Muhammad Shoaib Rasheed CV Updated 2Muhammad Shoaib Rasheed CV Updated 2
Muhammad Shoaib Rasheed CV Updated 2Muhammad Shoaib
 
Green Communities: "Short&slow"
Green Communities: "Short&slow"Green Communities: "Short&slow"
Green Communities: "Short&slow"green communities
 
Executive summary chaina automobile
Executive summary chaina automobileExecutive summary chaina automobile
Executive summary chaina automobileMuhammad Shoaib
 

Destaque (10)

muhammad-shoaib-rasheed-cv-updated-2 - Copy
muhammad-shoaib-rasheed-cv-updated-2 - Copymuhammad-shoaib-rasheed-cv-updated-2 - Copy
muhammad-shoaib-rasheed-cv-updated-2 - Copy
 
Presentazione parco delle madonie al seminario green communities part2
Presentazione parco delle madonie al seminario green communities part2Presentazione parco delle madonie al seminario green communities part2
Presentazione parco delle madonie al seminario green communities part2
 
nothing else
nothing elsenothing else
nothing else
 
Najwa image consultant profile
Najwa image consultant profileNajwa image consultant profile
Najwa image consultant profile
 
Green communities by Lorenzoni
Green communities by Lorenzoni Green communities by Lorenzoni
Green communities by Lorenzoni
 
1. “Sistemi di rating: il quadro internazionale e nazionale”
1. “Sistemi di rating: il quadro internazionale e nazionale” 1. “Sistemi di rating: il quadro internazionale e nazionale”
1. “Sistemi di rating: il quadro internazionale e nazionale”
 
Mobile marketing for profit
Mobile marketing for profitMobile marketing for profit
Mobile marketing for profit
 
Muhammad Shoaib Rasheed CV Updated 2
Muhammad Shoaib Rasheed CV Updated 2Muhammad Shoaib Rasheed CV Updated 2
Muhammad Shoaib Rasheed CV Updated 2
 
Green Communities: "Short&slow"
Green Communities: "Short&slow"Green Communities: "Short&slow"
Green Communities: "Short&slow"
 
Executive summary chaina automobile
Executive summary chaina automobileExecutive summary chaina automobile
Executive summary chaina automobile
 

Semelhante a Tutorial.yii

Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Javascript truquesmagicos
Javascript truquesmagicosJavascript truquesmagicos
Javascript truquesmagicosponto hacker
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Saulo Vallory
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Rafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em açãoRafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em açãoRafael Garcia
 
Introdução ao Symfony 2 - SfCon 2012
Introdução ao Symfony 2 - SfCon 2012Introdução ao Symfony 2 - SfCon 2012
Introdução ao Symfony 2 - SfCon 2012Hugo Magalhães
 
Symfony - Framework PHP de alta produtividade
Symfony - Framework PHP de alta produtividadeSymfony - Framework PHP de alta produtividade
Symfony - Framework PHP de alta produtividadeHugo Magalhães
 
Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHPigorpimentel
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 

Semelhante a Tutorial.yii (20)

Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Javascript truquesmagicos
Javascript truquesmagicosJavascript truquesmagicos
Javascript truquesmagicos
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Rafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em açãoRafael Garcia - Yii Framework, principais características e em ação
Rafael Garcia - Yii Framework, principais características e em ação
 
Introdução ao Symfony 2 - SfCon 2012
Introdução ao Symfony 2 - SfCon 2012Introdução ao Symfony 2 - SfCon 2012
Introdução ao Symfony 2 - SfCon 2012
 
Symfony - Framework PHP de alta produtividade
Symfony - Framework PHP de alta produtividadeSymfony - Framework PHP de alta produtividade
Symfony - Framework PHP de alta produtividade
 
Tw Course Ajax 2007 Ap05
Tw Course Ajax 2007 Ap05Tw Course Ajax 2007 Ap05
Tw Course Ajax 2007 Ap05
 
Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHP
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 

Tutorial.yii

  • 1. Tutorial Yii Framework Yii Framework http://www.yiiframework.com O Guia Definitivo para o Yii http://www.yiiframework.com/doc/guide/pt/index Yii Class Reference http://www.yiiframework.com/doc/api/1.0.10 Yii Class Reference - CHtml - Componentes de Interface http://www.yiiframework.com/doc/api/CHtml Índice 1. Instalação........................................................................................................................................2 2. Geração da Estrutura da Aplicação ................................................................................................2 3. Banco de Dados..............................................................................................................................2 4. Geração do MVC............................................................................................................................2 5. Menu...............................................................................................................................................4 6. Extensões........................................................................................................................................4 7. Labels dos Campos.........................................................................................................................4 8. Campos do Grid..............................................................................................................................5 9. Campos Obrigatórios......................................................................................................................5 Anexo I – Estrutura da Aplicação..........................................................................................................7 Anexo II – Menu multi-nível.................................................................................................................8 Anexo III – Campos do Grid .................................................................................................................9
  • 2. 1. Instalação Execute o download do Yii Framework no link: http://www.yiiframework.com/download Copie o arquivo ZIP para o diretório “C:WWW”, descompacte e mude o nome do diretório para ”yii”. 2. Geração da Estrutura da Aplicação Entre no “Prompt de comando” e execute os comandos abaixo para criar a estrutura da aplicação: CD www MD servico CD servico php5php wwwyiiframeworkyiic webapp wwwservico Para testar digite a URL abaixo no browser: http://localhost/www/servico/index.php 3. Banco de Dados Crie um banco de dados chamado “servico” no MySQL com o SQL disponível no site. Altere o arquivo abaixo com a configuração do MySQL mostrada: wwwservicoprotectedconfigmain.php 'db'=>array( 'connectionString'=>'mysql:host=localhost;dbname=servico', 'username'=>'root', 'password'=>'mysql', ), 4. Geração do MVC Entre no “Prompt de comando” e execute os comandos abaixo para criar a estrutura da aplicação: php5php wwwyiiframeworkyiic shell model TABELA, para gerar o MODEL de uma tabela crud TABELA, para gerar o VIEW/CONTROLLER de uma tabela
  • 3. Abaixo é mostrada a saída dos comandos de geração: Yii Interactive Tool v1.0 (based on Yii v1.0.10) Please type 'help' for help. Type 'exit' to quit. >> model cidade generate cidade.php The following model classes are successfully generated: cidade If you have a 'db' database connection, you can test these models now with: $model=cidade::model()->find(); print_r($model); >> crud cidade generate CidadeController.php mkdir E:/php/servico/protected/views/cidade generate create.php generate update.php generate list.php generate show.php generate admin.php generate _form.php Crud 'cidade' has been successfully created. You may access it via: http://hostname/path/to/index.php?r=cidade >> As tabelas do banco de dados cujo código deve ser gerado são: cidade cliente os osobservacao osservico servico Para testar digite a URL abaixo no browser: http://localhost/www/servico/index.php?r=cidade
  • 4. 5. Menu O arquivo abaixo contém a estrutura principal da tela, inclusive o menu, compartilhado por todas as VIEWs, e deve ser alterado conforme o código mostrado: wwwservicoprotectedviewslayoutsmain.php $this->widget('application.components.MainMenu',array( 'items'=>array( array('label'=>'Home', 'url'=>array('/site/index')), array('label'=>'Contact', 'url'=>array('/site/contact')), array('label'=>'Cidades', 'url'=>array('/cidade/admin')), array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest), array('label'=>'Logout', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest) ), )); 6. Extensões O menu padrão do Yii permite apenas 1 único nível de opções. Para resolver este problemas podemos instalar uma extensão que implementa um menu multi-nível. Basta executar o download do link abaixo, descompactar no diretório indicado e alterar o código do script anterior para o código mostrado no Anexo II: http://www.yiiframework.com/extension/menu wwwservicoprotectedextensionsmenu 7. Labels dos Campos As descrições dos campos do banco de dados são definidos no MODEL da tabela, através da função “attributeLabels”: wwwservicoprotectedmodelscidade.php public function attributeLabels() { return array( 'CHAVE' => 'Chave', 'NOME' => 'Nome da Cidade', 'UF' => 'UF', 'DATE_TIME' => 'Date Time', );
  • 5. 8. Campos do Grid Os campos do grid exibido no VIEW de cada tabela estão no arquivo abaixo podendo ser alterado para exibir ícones ao invés de links bem como remover campos, como mostrado no Anexo III: wwwservicoprotectedviewscidadeadmin.php Além disso é necessário alterar a classe “dataGrid” do CSS como mostrado no código abaixo: wwwservicocssmain.css table.dataGrid { background: white; border-collapse: collapse; /* width: 100%; */ } O diretório abaixo vai receber as imagens GIF disponíveis no site: wwwservicothemesclassicimages O tema “classic” deve ser configurado no arquivo de configuração: wwwservicoprotectedviewslayoutsmain.php 'theme'=>'classic' 9. Campos Obrigatórios e Date_Time O Yii não gera campos para digitação da chave-primária nas telas de inclusão. Assim é necessário definir estes campos nas tabelas CIDADE e SERVICO, apenas para as inclusões. O campo DATE_TIME pode ser removido das telas. Além disso é necessário incluir o campo CHAVE na lista de campos a serem gravados e atribuir um valor ao campo DATE_TIME usado para gravar a data da última alteração no registro, como mostrado abaixo:
  • 6. wwwservicoprotectedviewscidade_form.php wwwservicoprotectedviewsservico_form.php <?php echo CHtml::errorSummary($model) ?> <?php if(!$update) { echo '<div class="simple">'; echo CHtml::activeLabelEx($model,'CHAVE',array('label'=>'Chave')); echo CHtml::activeTextField($model,'CHAVE',array('size'=>10,'maxlength'=>10,$r eadonly=>'')); echo '</div>'; } ?> wwwexemployiiprotectedmodelsCidade.php public function safeAttributes() { return array( 'CHAVE', 'NOME', 'UF', 'DATE_TIME', ); } wwwexemployiiprotectedmodelsServico.php public function safeAttributes() { return array( 'CHAVE', 'DESCRICAO', 'PRECO', 'DATE_TIME', ); } wwwexemployiiprotectedmodels*.php protected function beforeSave() { $this->DATE_TIME = Date('y-m-d H:i:s.u'); return true; }
  • 7. Anexo I – Estrutura da Aplicação testdrive/ index.php Script de entrada da aplicação Web assets/ Contém arquivos de recurso publicados css/ Contém arquivos CSS images/ Contém arquivos de imagem themes/ Contém temas da aplicação protected/ Contém arquivos protegidos da aplicação yiic Script de linha de comando yiic yiic.bat Script de linha de comando yiic para o Windows commands/ Contém comandos 'yiic' customizados shell/ Contém comandos 'yiic shell' customizados components/ Contém componentes reutilizáveis do usuário MainMenu.php A classe widget 'MainMenu' (Menu Principal) Identity.php A classe 'Identity' usada nas autenticações views/ Contém arquivos de visão dos widgets mainMenu.php O arquivo de visão do widget 'MainMenu' config/ Contém arquivos de configurações console.php Configuração da aplicação console main.php Configuração da aplicação Web controllers/ Contém arquivos das classes de controle SiteController.php Classes de controle padrão extensions/ Contém extensões de terceiros messages/ Contém mensagens traduzidas models/ Contém arquivos das classes de modelo LoginForm.php Modelo do formulário para a ação 'login' ContactForm.php Modelo do formulário para a ação 'contact' runtime/ Contém arquivos gerados temporariamente views/ Contém arquivos de visão dos controles e layouts layouts/ Contém arquivos de visão do layout main.php O layout padrão para todas as visões site/ Contém arquivos de visão para o controle 'site' contact.php Visão para a ação 'contact' index.php Visão para a ação 'index' login.php Visão para a ação 'login' system/ Contém arquivos de visão do sistema
  • 8. Anexo II – Menu multi-nível <!--<div id="mainmenu"> <php $this->widget('application.components.MainMenu',array( 'items'=>array( array('label'=>'Home', 'url'=>array('/site/index')), array('label'=>'Contact', 'url'=>array('/site/contact')), array('label'=>'Cidades', 'url'=>array('/cidade/admin')), array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest), array('label'=>'Logout', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest) ), )); > </div>--><!-- mainmenu --> <?php $this->widget('application.extensions.menu.SMenu', array( 'menuID'=>'menu', 'delay'=>3, 'stylesheet'=>'menu_white.css', 'menu'=>array( array('url'=>array('route'=>'site/index'),'label'=>'Home'), array('url'=>array('route'=>'site/contact'),'label'=>'Contact'), array('url'=>array(),'label'=>'Cadastros','visible'=>!Yii::app()->user->isGuest, array('url'=>array('route'=>'cidade/admin'),'label'=>'Cidades'), array('url'=>array('route'=>'cliente/admin'),'label'=>'Clientes'), array('url'=>array('route'=>'servico/admin'),'label'=>'Serviços'), array('url'=>array('route'=>'os/admin'),'label'=>'OS'), array('url'=>array('route'=>'osobservacao/admin'),'label'=>'OS Observacções'), array('url'=>array('route'=>'osservico/admin'),'label'=>'OS Serviços'), ), array('url'=>array('route'=>'site/login'),'label'=>'Login','visible'=>Yii::app()->user->isGuest), array('url'=>array('route'=>'site/logout'),'label'=>'Logout','visible'=>!Yii::app()->user->isGuest), ) )); ?>
  • 9. Anexo III – Campos do Grid <table class="dataGrid"> <thead> <tr> <th></th> <th></th> <th style="width:20px;"><?php echo $sort->link('CHAVE'); ?></th> <th style="width:200px;"><?php echo $sort->link('NOME'); ?></th> <th style="width:23px;"><?php echo $sort->link('UF'); ?></th> </tr> </thead> <tbody> <?php foreach($models as $n=>$model): ?> <tr class="<?php echo $n%2?'even':'odd';?>"> <td> <?php echo CHtml::imageButton('/www/servico/images/update.gif',array( 'submit'=>'index.php?r=cidade/update&id=' . $model->CHAVE, 'alt'=>'Update')); ?> </td> <td> <?php echo CHtml::imageButton('/www/servico/images/delete.gif',array( 'submit'=>'', 'params'=>array('command'=>'delete','id'=>$model->CHAVE), 'confirm'=>"Excluir '{$model->CHAVE}' ?", 'alt'=>'Excluir')); ?> </td> <td><?php echo CHtml::link($model->CHAVE,array('show','id'=>$model->CHAVE)); ?></td> <td><?php echo CHtml::encode($model->NOME); ?></td> <td><?php echo CHtml::encode($model->UF); ?></td> </tr> <?php endforeach; ?> </tbody> </table>