Escolar Documentos
Profissional Documentos
Cultura Documentos
Tutorial Yii PDF
Tutorial Yii PDF
Yii Framework
http://www.yiiframework.com
Í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
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”.
Entre no “Prompt de comando” e execute os comandos abaixo para criar a estrutura da aplicação:
CD \www
MD servico
CD servico
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:
\www\servico\protected\config\main.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:
If you have a 'db' database connection, you can test these models now
with:
$model=cidade::model()->find();
print_r($model);
Crud 'cidade' has been successfully created. You may access it via:
http://hostname/path/to/index.php?r=cidade
>>
cidade
cliente
os
osobservacao
osservico
servico
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:
\www\servico\protected\views\layouts\main.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
\www\servico\protected\extensions\menu
As descrições dos campos do banco de dados são definidos no MODEL da tabela, através da função
“attributeLabels”:
\www\servico\protected\models\cidade.php
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:
\www\servico\protected\views\cidade\admin.php
Além disso é necessário alterar a classe “dataGrid” do CSS como mostrado no código abaixo:
\www\servico\css\main.css
table.dataGrid
{
background: white;
border-collapse: collapse;
/* width: 100%; */
}
\www\servico\themes\classic\images
\www\servico\protected\views\layouts\main.php
'theme'=>'classic'
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:
\www\servico\protected\views\cidade\_form.php
\www\servico\protected\views\servico\_form.php
<?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>';
}
?>
\www\exemployii\protected\models\Cidade.php
\www\exemployii\protected\models\Servico.php
\www\exemployii\protected\models\*.php
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
<!--<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 -->
<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>