Para ter uma experiência inicial com o Yii, descrevemos nesta seção como criar nossa
primeira aplicação em Yii. Iremos utilizar a poderosa ferramenta yiic
que pode ser
usada para automatizar a criação de código para várias finalidades. Assumiremos que
YiiRoot
é o diretório onde o Yii está instalado e WebRoot
é o diretório raíz
do servidor Web.
Execute o yiic
pela linha de comando, como no exemplo a seguir:
% YiiRoot/framework/yiic webapp WebRoot/testdrive
Nota: Quando executamos o
yiic
no Mac OS, Linux ou Unix, devemos alterar a permissão do arquivoyiic
para torna-lo executável.Como forma alternativa, você pode executa-lo da seguinte maneira:
% cd WebRoot/testdrive % php YiiRoot/framework/yiic.php webapp WebRoot/testdrive
Esse comando irá criar o esquele de uma aplicação Yii, no diretório WebRoot/testdrive
.
A aplicação tem um estrutura de diretórios que é a necessária para a maioria das
aplicações feitas no Yii.
Sem ter escrito uma única linha de código, ja podemos testar nossa primeira aplicação Yii, acessando a seguinte URL:
http://nomedoservidor/testdrive/index.php
Como podemos ver, a aplicação tem três páginas: a página inicial, a página de contato e a página de login. A página principal mostra algumas informações sobre a aplicação, como o login do usuário ativo, a página de contato exibe um formulário de contato que os usuários podem preencher e enviar suas mensagens, a página de login permite que os usuários se autentiquem antes de acessar o conteúdo privilegiado. Veja as imagens a seguir para mais detalhes:
Página Principal
Página de Contato
Página de Contato com erros de entrada
Página de Contato com emissão bem sucedida
Página de Login
A listagem seguinte mostra a estrutura de diretórios da nossa aplicação. Por favor, veja as Convenções para obter explicações detalhadas sobre essa estrutura.
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
A maioria das aplicações Web são auxiliadas com o uso de banco de dados.
Nossa aplicação de test-drive não é uma exceção. Para usar banco de dados,
primeiro precisamos dizer à aplicação como se conectar a ele. Isto é feito
alterando o arquivo de configuração WebRoot/testdrive/protected/config/main.php
,
como mostrado abaixo:
return array(
......
'components'=>array(
......
'db'=>array(
'connectionString'=>'sqlite:protected/data/source.db',
),
),
......
);
Acima, nós adicionamos uma entrada para db
ao array components
, que instrui a
aplicação para se conectar ao banco de dados SQLite WebRoot/testdrive/protected/data/source.db
quando for preciso.
Nota: Para utilizar os recursos de banco de dados do Yii, precisamos ativar a extensão PDO do PHP e a extensão de driver PDO específico. Para a aplicação test-drive, as extensões
php_pdo
ephp_pdo_sqlite
deverão estar habilitadas.
Para este fim, precisamos de preparar uma base de dados SQLite, para que a configuração feita anteriormente seja eficaz. Usando alguma ferramenta de administração do SQLite, podemos criar um banco de dados com o seguinte esquema:
CREATE TABLE User ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, username VARCHAR(128) NOT NULL, password VARCHAR(128) NOT NULL, email VARCHAR(128) NOT NULL );
Nota: Se estiver utilizando um banco de dados MySQL, você deve substituir o
AUTOINCREMENT
, utilizado no código acima, porAUTO_INCREMENT
.
Por simplicidade, criamos somente uma única tabela: User
no nosso banco de dados.
O arquivo do banco de dados SQLite foi salvo em WebRoot/testdrive/protected/data/source.db
.
Observe que tanto o arquivo quanto o diretório devem ter permissão de leitura do servidor Web,
como requerido pelo SQLite.
Agora começa a parte divertida. Iremos implementar operações CRUD (create, read,
update and delete) quer realizará inserções, leituras, edições e deleções na
tabela User
que acabamos de criar. Este tipo de operação é frequetemente necessário
em aplicações reais.
Em vez da dificuldade na escrita de um código real, iremos utilizar a poderosa ferramenta
yiic
para gerar automaticamente o código. Este processo é também conhecido como scaffolding.
Abra a linha de comando e execute os comandos listados a seguir:
% cd WebRoot/testdrive % protected/yiic shell Yii Interactive Tool v1.0 Please type 'help' for help. Type 'exit' to quit. >> model User generate User.php The 'User' class has been successfully created in the following file: D:\wwwroot\testdrive\protected\models\User.php If you have a 'db' database connection, you can test it now with: $model=User::model()->find(); print_r($model); >> crud User generate UserController.php mkdir D:/wwwroot/testdrive/protected/views/user generate create.php generate update.php generate list.php generate show.php generate admin.php generate _form.php Crud 'user' has been successfully created. You may access it via: http://hostname/path/to/index.php?r=user
Acima, utilizamos o comando yiic shell
para interagir com nossa
aplicação esqueleto. Na linha de comando, podemos digitar dois subcomandos:
model User
e crud User
. O primeiro gera a classe modelo para a tabela
User
, enquanto que o segundo comando lê a classe modelo User
e gera
o código necessário para as operações do tipo CRUD.
Nota: Você poderá encontrar erros como "...could not find driver" ou "...driver não encontrado", mesmo que o verificador de requisitos mostre que você já tem o PDO ativado e o driver PDO correspondente ao Banco de Dados. Caso isso ocorra, você deve tentar rodar a ferramenta
yiic
do seguinte modo:% php -c caminho/para/php.ini protected/yiic.php shellonde
caminho/para/php.ini
representa o arquivo PHP.ini correto.
Podemos ver nossa primeira aplicação pela seguinte URL:
http://hostname/testdrive/index.php?r=user
Essa página irá mostrar uma lista de entradas de usuários da tabela User
.
Se tabela estiver vazia, nada será exibido.
Clique no link New User
da página. Caso não esteja autenticado seremos
levados à página de login. Uma vez logado, será exibido um formulário
de entrada que permite adicionar um novo usuário. Preencha o formulário e
clique sobre o botão Create
. Se houver qualquer erro de entrada, um
erro será mostrado, o que nos impede de salvar os dados. Voltando à lista
de usuários, iremos ver o recém adicionado usuário aparecendo na lista.
Repita as etapas acima para adicionar novos usuários. Repare que a tabela de usuários será automaticamente paginada, caso existam muitos usuários a serem exibidos em uma página.
Se logarmos como administrador utilizando o login/senha: admin/admin
, veremos
a página de administração de usuários pela seguinte URL:
http://hostname/testdrive/index.php?r=user/admin
Será mostrada uma tabela de usuários. Podemos clicar nas células do cabeçalho para ordenar as colunas correspondentes. E como na página de listagem dos usuários, a página de administração dos usuários também realiza a paginação quando existem muitos usuários a serem exibidos.
Todas essas incríveis funcionalidades foram criadas sem escrever uma única linha de código!
Página de administração dos usuários
Página de criação de um novo usuário
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.