Criando uma lista de contatos
Faremos uma lista de contatos, onde teremos a opção de cadastrar, editar e deletar eles.
Publicado por: Josemar Davi Luedke
Em: 12/08/2010 14h 59min
Em: 12/08/2010 14h 59min
Para iniciar uma aplicação com o Zeanwork você deve saber um pouco sobre os padrões dele.
Uma das padronizações que o Zeanwork possui é na arquitetura das pastas e arquivos, as pastas devem sempre ter a primeira letra maiúscula, seguindo o padrão CamelCase, já os arquivos, devem ter a primeira letra minúscula, seguindo o padrão lowerCamelCase.
Outro padrão é a extensão dos arquivos de view, o default do Zeanwork é .html, seguindo com o .php, tornando assim nomeDoArquivo.html.php, você pode alterar o default do Zeanwork em Zeanwork/Configs/settings.php.
O Zeanwork trabalha com "ambientes", onde criamos várias configurações para cada ambiente e com isso você pode ter uma configuração para quando estiver desenvolvendo e outra para quando sua aplicação estiver publicada.
Sabendo estes padrões podemos começar.
Neste caso nós vamos utilizar banco de dados, então devemos configurar os dados para a conexão com o mesmo. Vá em App/Configs/database.php, modifique os dados para a conexão ou crie mais uma configuração para o ambiente que desejar. Se você deseja ter somente uma configuração para todos os ambientes, crie a configuração com o nome de all. Modifique a configuração de auto.connect.database e auto.disconnect.database para true. Isso irá conectar com o banco de dados e desconectar automaticamente quando sua aplicação for executada.
Veja exemplo:
Agora vamos criar o banco de dados e a tabela para os contatos.
Veja o script de criação do banco de dados e da tabela.
Bom, agora vamos criar o controller que será executado quando acessarmos a URL: /contacts. Vá em App/Controller/ e crie o arquivo contacts.php com a seguinte estrutura:
Como precisamos buscar dados, fazer alterações e inserções no bando de dados, nós precisamos de um model para a tabela de contacts.
Vá em App/Models/ e crie um arquivo chamado de contacts.php com a seguinte estrutura:
Vamos criar um novo layout para a sua aplicação. Vá em App/Layouts/ e crie o arquivo default.html.php com a seguinte estrutura:
Agora vamos criar a action index e sua respectiva view. É nesta action que faremos a listagem dos contatos.
A action deve ser uma função dentro da classe do controller, que nesse caso é contact.
Veja exemplo:
Para criarmos a view para esta action, você deve criar uma pasta correspondente ao nome do controller. Esta pasta deve ser criada em App/Views/, que nesse caso o controller é Contacts, então ficará assim: App/Views/Contacts/.
O arquivo da action deve ficar dentro da pasta App/Views/Contacts/, e seu nome deve ser index.html.php.
Vamos criar a action e sua view para adicionar um novo contato.
Vamos criar a action e sua view para editar um contato.
Vamos criar a action para deletar um contato.
Para que quando você acessar o root da sua aplicação abra a lista de contatos, você deve alterar o controller padrão.
Para fazer isso, você deve localizar o método Router::setRoot() no arquivo de configuração das rotas, que é localizado em App/Configs/routers.php.
Veja exemplo:
Bom, o básico é isso.
Este é só um pequeno exemplo de como colocar o Zeanwork para trabalhar. Para você se aprofundar mais no Zeanwork, aconselhamos a ler a documentação do Zeanwork.
Uma das padronizações que o Zeanwork possui é na arquitetura das pastas e arquivos, as pastas devem sempre ter a primeira letra maiúscula, seguindo o padrão CamelCase, já os arquivos, devem ter a primeira letra minúscula, seguindo o padrão lowerCamelCase.
Outro padrão é a extensão dos arquivos de view, o default do Zeanwork é .html, seguindo com o .php, tornando assim nomeDoArquivo.html.php, você pode alterar o default do Zeanwork em Zeanwork/Configs/settings.php.
O Zeanwork trabalha com "ambientes", onde criamos várias configurações para cada ambiente e com isso você pode ter uma configuração para quando estiver desenvolvendo e outra para quando sua aplicação estiver publicada.
Sabendo estes padrões podemos começar.
Neste caso nós vamos utilizar banco de dados, então devemos configurar os dados para a conexão com o mesmo. Vá em App/Configs/database.php, modifique os dados para a conexão ou crie mais uma configuração para o ambiente que desejar. Se você deseja ter somente uma configuração para todos os ambientes, crie a configuração com o nome de all. Modifique a configuração de auto.connect.database e auto.disconnect.database para true. Isso irá conectar com o banco de dados e desconectar automaticamente quando sua aplicação for executada.
Veja exemplo:
Configure::write('database', array(
'development' => array(
'persistent' => false
, 'drive' => 'MySql'
, 'host' => 'localhost'
, 'user' => 'root'
, 'password' => ''
, 'database' => 'zeanwork'
, 'prefix' => null
, 'charset' => 'utf8'
)
)
);
Configure::write('auto.connect.database', true);
Configure::write('auto.disconnect.database', true);
Agora vamos criar o banco de dados e a tabela para os contatos.
Veja o script de criação do banco de dados e da tabela.
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; CREATE SCHEMA IF NOT EXISTS `zeanwork` DEFAULT CHARACTER SET utf8; USE `zeanwork`; -- ----------------------------------------------------- -- Table `zeanwork`.`contacts` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `zeanwork`.`contacts` ( `idContacts` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(150) NULL , `email` VARCHAR(250) NULL , `phone` VARCHAR(20) NULL , PRIMARY KEY (`idContacts`) ) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Bom, agora vamos criar o controller que será executado quando acessarmos a URL: /contacts. Vá em App/Controller/ e crie o arquivo contacts.php com a seguinte estrutura:
class ContactsController extends AppController {
public $uses = array('contacts'); //Carrega o model contacts
}
Como precisamos buscar dados, fazer alterações e inserções no bando de dados, nós precisamos de um model para a tabela de contacts.
Vá em App/Models/ e crie um arquivo chamado de contacts.php com a seguinte estrutura:
class Contacts extends AppModel {
public $table = 'contacts';
public $primaryKey = 'idContacts';
}
Vamos criar um novo layout para a sua aplicação. Vá em App/Layouts/ e crie o arquivo default.html.php com a seguinte estrutura:
<!DOCTYPE html>
<html>
<head>
<title><?php echo $this->pageTitle; echo ($this->pageTitle != null) ? ' -' : ''; ?> Contatos</title>
</head>
<body>
<div id="content">
<?php echo $this->contentForLayout; ?>
</div>
</body>
</html>Agora vamos criar a action index e sua respectiva view. É nesta action que faremos a listagem dos contatos.
A action deve ser uma função dentro da classe do controller, que nesse caso é contact.
Veja exemplo:
public function index(){
$this->setVar('contacts', $this->contacts->read()); //Seta uma variável na view com todos os dados da tabela contacts
}
Para criarmos a view para esta action, você deve criar uma pasta correspondente ao nome do controller. Esta pasta deve ser criada em App/Views/, que nesse caso o controller é Contacts, então ficará assim: App/Views/Contacts/.
O arquivo da action deve ficar dentro da pasta App/Views/Contacts/, e seu nome deve ser index.html.php.
//App/Views/Contacts/index.html.php
<a href="<?php echo Router::url('/contacts/add')?>">Adicionar</a><br />
<?php
foreach($contacts as $contact):
?>
<p>
<b><?php echo $contact['name']?></b> - <?php echo $contact['email']?> - <?php echo $contact['phone']?> <br />
<a href="<?php echo Router::url('/contacts/edit/'.$contact['idContacts'])?>">Editar</a> - <a href="<?php echo Router::url('/contacts/del/'.$contact['idContacts'])?>">Apagar</a>
</p>
<?php
endforeach;Vamos criar a action e sua view para adicionar um novo contato.
public function add(){
if($this->input->post()){
$this->contacts->autoSave();
$this->redirect('/contacts');
}
}
//App/Views/Contacts/add.html.php
<h1>Adicionar contato</h1>
<?php
$this->load->helper('form');
echo $this->form->start('contact');
echo $this->form->input('name', array('label' => 'Nome: ', 'divForLabel' => true, 'divForInput' => true)).br();
echo $this->form->input('email', array('label' => 'E-mail: ', 'divForLabel' => true, 'divForInput' => true)).br();
echo $this->form->input('phone', array('label' => 'Telefone:', 'divForLabel' => true, 'divForInput' => true)).br(2);
echo $this->form->submit('submit', array('value' => 'Postar', 'class' => 'submit'));
echo $this->form->end();
Vamos criar a action e sua view para editar um contato.
public function edit($id = null){
$this->setVar('contact', $this->contacts->findByIdContacts($id));
if($this->input->post() && $id != null){
$this->contacts->autoSave(array('idContacts' => $id));
$this->redirect('/contacts');
}
}
//App/Views/Contacts/edit.html.php
<h1>Editar um contato</h1>
<?php
$this->load->helper('form');
echo $this->form->start('contact');
echo $this->form->input('name', array('label' => 'Nome: ', 'divForLabel' => true, 'divForInput' => true, 'value' => $contact['name'])).br();
echo $this->form->input('email', array('label' => 'E-mail: ', 'divForLabel' => true, 'divForInput' => true, 'value' => $contact['email'])).br();
echo $this->form->input('phone', array('label' => 'Telefone:', 'divForLabel' => true, 'divForInput' => true, 'value' => $contact['phone'])).br(2);
echo $this->form->submit('submit', array('value' => 'Postar', 'class' => 'submit'));
echo $this->form->end();
Vamos criar a action para deletar um contato.
public function del($id = null){
if($id != null){
$this->contacts->delete($id);
$this->redirect('/contacts');
}
}
Para que quando você acessar o root da sua aplicação abra a lista de contatos, você deve alterar o controller padrão.
Para fazer isso, você deve localizar o método Router::setRoot() no arquivo de configuração das rotas, que é localizado em App/Configs/routers.php.
Veja exemplo:
Router::setRoot('contacts');
Bom, o básico é isso.
Este é só um pequeno exemplo de como colocar o Zeanwork para trabalhar. Para você se aprofundar mais no Zeanwork, aconselhamos a ler a documentação do Zeanwork.
Comentários
Gilberto
16/09/2010 14h 13min
estou tentando seguir o tutorial mas ele da erro
Ops!
Database Error: Você não está conectado com o banco de dados!
Page: C:\wamp\www\ze\Zeanwork\Datasource\mysql.php
Line: 608
[Zeanwork Framework PHP]
E quando coloco o contacts/edit da ero na linha 14
Parse error: parse error in C:\wamp\www\ze\App\Views\Contacts\edit.html.php on line 14
Ops!
Database Error: Você não está conectado com o banco de dados!
Page: C:\wamp\www\ze\Zeanwork\Datasource\mysql.php
Line: 608
[Zeanwork Framework PHP]
E quando coloco o contacts/edit da ero na linha 14
Parse error: parse error in C:\wamp\www\ze\App\Views\Contacts\edit.html.php on line 14
Josemar Davi Luedke
16/09/2010 14h 23min
Gilberto,
Sobre o primeiro erro, você deve configurar os dados para a conexão. Modifique a configuração de auto.connect.database e auto.disconnect.database para true (No arquivo: App/Configs/database.php). Isso irá conectar com o banco de dados e desconectar automaticamente quando sua aplicação for executada.
Sobre o segundo erro, verefique se você colocou todo o código desta view.
Aguardo para saber se deu certo!
Sobre o primeiro erro, você deve configurar os dados para a conexão. Modifique a configuração de auto.connect.database e auto.disconnect.database para true (No arquivo: App/Configs/database.php). Isso irá conectar com o banco de dados e desconectar automaticamente quando sua aplicação for executada.
Sobre o segundo erro, verefique se você colocou todo o código desta view.
Aguardo para saber se deu certo!
Gilberto
16/09/2010 14h 41min
Conexão deu certo
Coloquei todo o código conforme acima: Contacts/add.html.php
Nesta parte no editor acusa erro na linha 13 que é esta:
echo $this->form->input('name', array('label' => 'Nome: ', 'divForLabel' => true, 'divForInput' => true)).br();
Tenho uma pergunta: porque o php começa abaixo e deixa um pedaço do bloco fora da tag?
Sou iniciante de Framework por isso pergunto.
Aguardo
Coloquei todo o código conforme acima: Contacts/add.html.php
Nesta parte no editor acusa erro na linha 13 que é esta:
echo $this->form->input('name', array('label' => 'Nome: ', 'divForLabel' => true, 'divForInput' => true)).br();
Tenho uma pergunta: porque o php começa abaixo e deixa um pedaço do bloco fora da tag?
Sou iniciante de Framework por isso pergunto.
Aguardo
Josemar Davi Luedke
16/09/2010 15h 11min
Gilberto,
No código não tem erros! Qual editor você esta utilizando? Talvez ele não esteja interpletando o código!
Bahh, me desculme, mas não entendi a sua pergunda!
Aguardo!
No código não tem erros! Qual editor você esta utilizando? Talvez ele não esteja interpletando o código!
Bahh, me desculme, mas não entendi a sua pergunda!
Aguardo!
Gilberto
16/09/2010 15h 18min
Vou verificar o que ocorre ...
Este codigo aqui tem poucas linhas e da parse erro
OBS: quando tiro o public nao da erro, mas não funciona.
Sobre a pergunta ... alguns blocos ficam fora da tag
(acusa erro nesta linha) public function del($id = null){
if($id != null){
$this->contacts->delete($id);
$this->redirect('/contacts');
}
}
Vc tem o zip dele ai pra eu estudar?
Este codigo aqui tem poucas linhas e da parse erro
OBS: quando tiro o public nao da erro, mas não funciona.
Sobre a pergunta ... alguns blocos ficam fora da tag
(acusa erro nesta linha) public function del($id = null){
if($id != null){
$this->contacts->delete($id);
$this->redirect('/contacts');
}
}
Vc tem o zip dele ai pra eu estudar?
Gilberto
16/09/2010 15h 41min
Josemar...
Tudo certo agora.
Era só o espaço que tinha antes do array
echo $this->form->input('name', array('label' =>
Obrigado
Tudo certo agora.
Era só o espaço que tinha antes do array
echo $this->form->input('name', array('label' =>
Obrigado
Josemar Davi Luedke
16/09/2010 15h 46min
Ok, mas se você quiser o exemplo completo eu posso lhe passar o endereço para download!!!
O que você achou do framework?
O que você achou do framework?
Gilberto
18/09/2010 13h 15min
Sou novo quando se trata de Framework normalmente utilizo o método tradicional para programar ... mas isto é cansativo, por isso estou avaliando Framework.
Sobre este eu gostei, dos tutoriais que peguei para fazer foi o úncio que consegui finalizar.
Ainda falta muito para eu me adaptar já que tudo é novo.
Teremos mais tutoriais?
Seria interessante realizar um projeto onde trabalhe com template, paginação e validação de dados dos formulários.
Acho que é um grande projeto só precisamos de mais tutoriais.
Att Gilberto
Sobre este eu gostei, dos tutoriais que peguei para fazer foi o úncio que consegui finalizar.
Ainda falta muito para eu me adaptar já que tudo é novo.
Teremos mais tutoriais?
Seria interessante realizar um projeto onde trabalhe com template, paginação e validação de dados dos formulários.
Acho que é um grande projeto só precisamos de mais tutoriais.
Att Gilberto
Josemar Davi Luedke
18/09/2010 13h 22min
Gilberto, sim teremos mais tutoriais em breve.
Fico feliz que você gostou!
Obrigado.
Fico feliz que você gostou!
Obrigado.
JULIO
29/09/2010 14h 26min
Obrigado pelo exemplo!!!!
Leonardo
07/12/2010 00h 36min
Olá
Gostaria de saber se podes me disponibilizar esta lista de contatos pronta ou um link p download...
Eu nao entendo de programação e gostaria muito de experimentar esta lista.
Desde Já Agradeço
Gostaria de saber se podes me disponibilizar esta lista de contatos pronta ou um link p download...
Eu nao entendo de programação e gostaria muito de experimentar esta lista.
Desde Já Agradeço
Josemar Davi Luedke
07/12/2010 08h 33min
Flavio Cesarino
26/11/2011 23h 10min
Legal, achei muito interessante este Framework por ser brasileiro e ter toda a sua documentação em português. Ideal para quem está começando ou para quem pretende começar a trabalhar com framework.
Encontrei este Framework através do comentário no site: http://www.pinceladasdaweb.com.br/blog/2008/12/15/7-frameworks-php-brasileiros/
Encontrei este Framework através do comentário no site: http://www.pinceladasdaweb.com.br/blog/2008/12/15/7-frameworks-php-brasileiros/
Deixe seu comentário



