Skip to content


Tutorial: Zend Framework

Esse tutorial tem como objetivo mostrar para as pessoas que nunca viram nada sobre o ZF(Zend Framework) e estão querendo saber como ele funciona.

Quem já ouviu falar do Zend Framework? Resumidamente a Zend é uma empresa responsável pela manutenção e desenvolvimento do PHP.
A engine de orientação a objetos do php5 foi totalmente reescrita pelo pessoal da Zend.

Mas o que seria um framework?

O framework é um conjunto de classes com objetivo de reutilização de um design, provendo um guia para uma solução de arquitetura em um domínio específico de software. (Wikipedia)
Pode-se dizer que ele seria um conjunto de bibliotecas específicas.

Falando nossa lingua, o framework é um conjuntão de bibliotecas que ajuda em nosso trabalho do dia a dia, e nos trabalhos mais complicados também.

Esse artigo utiliza a versão 0.8 do framework. (dia 28/02/07)
[atualizado]
Versão atual: 1.0.2 (05/10/07)
[/atualizado]

Entendendo o Zend Framework

O Zend Framework segue o padrão MVC – Model View Controller. É um padrão de arquitetura onde separa o GUI, templates, etc(View) da lógica(Model) e do controle(Controller).
Então nele você pode usar a mesma lógica e/ou controle em diversas interfaçes com o usuário.

Usando o Zend Framework

Agora vamos arrumar a estrutura de diretórios necessária para o correto funcionamento do ZF.

diretórios

PS: a pasta ZF-tutorial fica dentro do DocumentRoot, que é onde fica suas páginas no servidor(padrão do apache: htdocs/ ou /var/www/).

No caso a pasta controllers, models e views estão dentro da pasta app(application, nome sugestivo). publico é onde vai suas outras coisas normais como imagens e css, js e assim por diante. E lib é a pasta onde vai ficar o ZF.

Entre na pasta onde você descompactou o arquivo tarball(.tar.gz), depois entre na pasta library e copie a pasta zend para a sua pasta lib(na ZF-tutorial) do seu sistema. Talvez você precise mudar(ou copiar) como root, aqui no exemplo vou usar sem o root.

cd ~/ZendFramework-1.0.1/library
 
cp -Rfv Zend/ documentRoot_do_apache/ZF-tutorial/lib/

Aí depois no diretório lib irá ter lib/Zend, certo?

lib/Zend

Configurando o Apache

Primeira coisa que temos a fazer é abilitar o módulo rewrite do apache.
Edite o arquivo de configuração do apache, httpd.conf.
Descomente(tirando o #) a linha onde está escrito:

LoadModule rewrite_module modules/mod_rewrite.so

Defina o AccessFileName (pode ser no final do arquivo):

AccessFileName .htaccess

Setar a opção AllowOverride como All.

Trocar as linhas abaixo:

#<Directory />
 
# Options Indexes FollowSymLinks
 
# AllowOverride None
 
#</Directory>

por:

<directory>
 
Options FollowSymLinks Includes
 
AllowOverride All
 
</directory>

Criando o Bootstrapping

O controller do ZF, Zend_Controller, é feito para suportar websites com urls limpas.
Então, todas as requisições precisam ser feitas diretamente em um arquivo index.php, essa prática é conhecida como bootstrapping.
E para isso precisamos criar alguns arquivos .htaccess.

ZF-tutorial/.htaccess

RewriteEngine on
 
RewriteRule .* index.php
 
php_flag magic_quotes_gpc off
 
php_flag register_globals off

Essa RewriteRule quer dizer que para qualquer coisa escrita ele(apache) irá redirecionar para o index.php(que fica dentro do ZF-tutorial, calma que ainda vamos cria-lo). :)
Alí também setamos algumas configurações do PHP.ini. Essas configurações provavelmente já estão setadas como padrão, mas é bom ter certeza né. Elas só vão funcionar se estiver habilitado o mod_php no httpd.conf do apache.

Agora vamos setar nosso .htaccess na pasta público. Lá estará os arquivos JavaScript, CSS, imagens e assim por diante. Então vamos habilitar tudo por lá.

ZF-tutorial/publico/.htaccess

RewriteEngine off

Agora na pasta app e no lib não queremos que nenhum intruso acesse, porque lá estão nossos arquivos preciosos. :P
ZF-tutorial/app/.htaccess

deny from all

ZF-tutorial/lib/.htaccess

deny from all

Esse esquema de bootstrapping é recomendação dos desenvolvedores do ZF, ok? Motivo de segurança, sabe como é né.

Criando o nosso index.php(bootstrap file)

Agora vamos criar nossa index.php na pasta ZF-tutorial.
ZF-tutorial/index.php

<?php
 
error_reporting(E_ALL|E_STRICT); // para mostrar os erros, apenas nos testes(precisa estar setado no PHP.ini)// Seta o timezone pra são paulo (>=PHP 5.1)
 
setlocale (LC_ALL, 'pt_BR');
 
date_default_timezone_set('America/Sao_Paulo');/* Seta include path para o funcionamento correto do framework ***OBRIGATÓRIO*** */
 
set_include_path('.'.PATH_SEPARATOR.'./lib'
 
.PATH_SEPARATOR.'./app/models/' //facilitar depois ao loadar as nossos modelos
 
.PATH_SEPARATOR.get_include_path());
 
/* Necessário para loadar qualquer outra classe do framework ***OBRIGATÓRIO*** */
 
include "Zend/Loader.php";
 
//loada o controller front
 
Zend_Loader::loadClass('Zend_Controller_Front');
 
/*
 
 Essa classe se encontra em Zend/Controller/Front.php
 
 Pode ser loadado diretamente pelo nome se preferir
 
 Para começar nós precisamos loadar primeiro o front controller
 
 Ele faz um controle automático para detectar a base URL e fazer o redirecionamento correto
 
 */
 
$controlador = Zend_Controller_Front::getInstance();
 
$controlador->throwExceptions(true); // mostrar excessões(apenas para testes)
 
$controlador->setControllerDirectory('./app/controllers'); // seta diretório com nossos controllers
 
//Roda o sistema
 
$controlador->dispatch();
 
//sem fechar a tag php

Note que agente não fecha a tag php para nos previnir de erros usando o header(), no caso de espaços em branco adicionais depois do ?>.

Agora na pasta controllers vamos criar um IndexController.php. Esse controller vai entrar em ação sempre que o index for chamado.
Para entender como funciona, precisamos saber como o Zend_Controller_Front trabalha.
O ZF usa um sistema de Controllers(Controladores) e Actions(Ações). E isso é setado diretamente na url(lembra do bootstrapping?). Como?
Usando o nosso exemplo, no formato http://localhost/ZF-tutorial/index/teste o index é o Controller e o teste é o Action. Outro exemplo, http://localhost/ZF-tutorial/foo/bar o foo é o Controller e o bar é o Action.
E quando você não coloca nada? Exemplo, http://localhost/ZF-tutorial/ o Zend_Controller_Front considera como index o Controller e index a Action.
O que vem depois é parâmetro, mas isso é assunto pra depois :P

Vamos fazer nosso IndexController então
ZF-tutorial/app/controllers/IndexController.php

<?php
 
class IndexController extends Zend_Controller_Action
 
{
 
  public function indexAction()
 
  {
 
    $this->view->titulo = 'Primeiro Tutorial de Zend Framework';
 
    $this->view->detalhe = 'Olá Mundo!';
 
  }
 
}

Atenção: Sempre o controller deve levar esse padrão NomeController.php e a classe com o mesmo nome do arquivo. A primeira letra sempre em maiúsculo e o resto minúsculo.
Já os Actions também deve levar esse padrão nomeAction(), sempre minúsculo.

Mas se você for rodar o sistema agora, vai perceber que vai dar uma excpetion gigantesca aí, certo?
Ela está falando que nós não temos o viewer para o index action do index controller.

Para criar, precisamos acessar a pasta scripts que está no ZF-tutorial/views/. Lá vamos criar uma pasta para cada Controller nosso, no nosso caso iremos criar uma pasta chamada index(por causa do IndexController). Todos os templates para o IndexController devem estar nessa pasta. O mais legal é que o nome do template leva o nome da action.
Calma, vou explicar: Por padrão cada action você pode ter um template ou não, mas se a action for tem um template para ela, então o template deve levar o mesmo nome da action. Por exemplo index.phtml(extenção do template) é o viewer do indexAction(), sacaram?

Na prática agora:

cd documentRoot_do_apache/ZF-tutorial/app/views/scripts
 
mkdir index

Agora nós temos que criar o index.phtml
ZF-tutorial/app/views/scripts/index/index.phtml

<html>
 
<head>
 
  <title><?php echo $this->escape($this->titulo); ?></title>
 
</head>
 
<body>
 
  <?php echo $this->escape($this->detalhe); ?>
 
</body>
 
</html>

é recomendável que usemos o escape para escapar tags html.

Agora vamos testar nossa aplicação.
Acesse o http://localhost/ZF-tutorial e depois tente http://localhost/ZF-tutorial/index/index
Você vai perceber que deu no mesmo.

Tarefinha, de leve

Agora deixo uma tarefa para vocês: Criar um zfAction(), no IndexController, com se respectivo viewer. Após criado, acessem http://localhost/ZF-tutorial/index/zf e vejam o que aconte!

Conclusões

Apesar desse tutorial mostrar de maneira simples como funciona o Zend Framework, podemos perceber como o Zend Frameowork é facil de usar e ao mesmo tempo é poderoso.
Para um maior aprendizado, irei postar um novo tutorial com muito mais recursos do ZF.

Por enquanto eu recomendo um tutorial muito bom(desenvolvedor do ZF), eu me baseei no tutorial dele, e tabmém usem bastante o manual.

Cya later!!


46 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Pedro Knofftoski says

    Bem seria legal se vc publicasse akele tutorial de PHP Login, mas com opção de cadastro de Usuário…

  2. Diego Tremper says

    Fala Felipe,

    pois é, com a chuva de padrões e metodologias de desenvolvimento criadas para melhorar os processos de desenvolvimento, estava faltando um framework para php com a assinatura de uma grande empresa (Zend), o assunto empolga aos que gostão da linguagem.

    Belo blog!

  3. Paulo Diovani says

    Boa Felipe,
    um ótimo toturial pra ZF, eu nem mesmo sabia que dava pra usar MVC com ele, mas me diga uma coisa, onde coloco o ‘M’?

    Estive pesquisando esta tarde, inclusive conversando um pouco em #zftalk@irc.freenode.net, e parece que existem muito métodos diferentes de usar um Model.
    Eu uso CakePHP a alguns meses, e acho ele realmente muito bom, principalmente o tratamento de dados, mas não é nada que não possa ser feito com outros frameworks com um pouco mais de trabalho. E tenho interesse no ZF pela extensibilidade deste.

    Minha dúvida é como usar Model com Zend Framework, permitindo acessar dados dinamicamente, e sem ficar preso a um único driver (MySQL, PostgreSQL…).

    Pretendo iniciar uma discussão sobre a melhor maneira de usar Models com ZF, em portugues…

  4. Felipe Tonello says

    Paulo,
    Ótima pergunta viu, até eu fico perguntando as vezes.
    Olha, posso responder essa pergunta pela minha experiência(pouca) no ZF.
    O model, pelo que percebi, é tem funcionalidade de você integrar classes e bibliotecas suas dentro do framework, intende?
    Você consegue loadar suas bibliotecas(externas do ZF) sem precisar sair da estrutura do ZF, sacou?!
    Além de funcionalidades com a Zend_Db_Table_Abstract, que você estende essa classe e consegue fazer fáceis manipulações nas tabelas(banco de dados).
    Na própria documentação do ZF não fala direito o que é. Mas eu sei que para aplicações de grande porte, tem como fazer várias coisas com os Models, não sei exatamente isso.

    Sobre esse discussão, eu achei bem interessante. Onde pretendia fazer? Estou disposto a participar. Se for possível, estarei disponível até amanhã. Pois sábado tenho que ir no workshop de frameworks, e gostaria de estar a par desse assunto.

  5. Paulo Diovani says

    Estou construindo um jogo online com alguns amigos, comecei o desenvolvimento com cakePHP, mas o cake me parece muito dependente dele próprio.
    Ao que parece, com o ZF, posso excuir o que não vou utilizar sem problemas, e continuar com a aplicação funcional.
    Em meu projeto também vou precisar usar bibliotecas extras, e a estrutura de diretórios com o ZF é bem mais maleável, assim posso colocar todas as bibliotecas no mesmo diretório sem problemas.

    Sobre os Models, pretendia utilizar Active Record com o ZF, assim como o cake faz, criando um modelo para cara tabela e chamando-o a partir do controle, mas mesmo isso pode ser desnecessário, acho que dá pra simplificar mais ainda.
    Aliás, uma vez que eu crie um Model, como uso ele no meu Controller? (só pra esclarecer, em cake uso $this->Model->ModelMethod(); e estou acostumado com este modo).

    Discussão?? :|
    Quiz diser aqui no blog mesmo, basta mais gente comentar (deve ter um bocado de jente lendo seus feeds), afinal, um blog é uma conversa, não um monólogo.
    ;)

  6. Felipe Tonello says

    Então, vou responder por aqui mesmo blz? não no e-mail hehe

    Tipo, conversei com um amigo(conheci agora), ele disse assim(resumindo): “idéia é tu retornar apenas dados dos teus objetos de negócio e os controllers adaptarem esses dados as tuas views”
    E ele citou algo que eu não sabia, só sabia fazer. São os Data Access Object(DAO) e Business Objects(BO) da ta aplicação. Como eu disse, padrão de acesso ao banco de dados e essas facilidades, fora estender classes suas.

    Para usar models seu no ZF, só é preciso usar o
    Zend_Loader::loadClass(‘nome do modelo’);
    e depois instanciar ele normal
    $modelo = new Modelo();

    Fácil né? por isso que não foge da arquitetura do ZF, isso é bem legal.
    Mas só funciona assim de cara se o seu include_path() estiver como o alí no tutorial, contive o .app/models.

    Hehehe, claro hehe

  7. Diego Tremper says

    só acrescentando aos posts anteriores, quanto ao Zend_Loader::loadClass(’nome do modelo’);
    $modelo = new Modelo();

    que o felipe citou acima, é possível utilizar a função __autoload do php, com isso é possivel apenas executar

    $modelo = new Modelo();

    então o Zend_Loader::loadClass(’nome do modelo’); fica por conta do Zend, para tal feito basta chamar no início da execução Zend_Loader::registerAutoload();

    Voltando ao Model:
    Mencionar o model como alguma classe me parece meio estranho, o model de sua aplicação é apenas uma camada dela, assim como o view.
    Exemplo:
    Atualmente participo do desenvolvimento de uma aplicação onde a camada de apresentação está instalada em um servidor e a camada de negócios (model) em outra, invocamos métodos desta camada através de SOAP, na camada de negócios implementamos rotinas voltadas a lógica de funcionamento do sistema, os métodos retornam os dados (por exemplo uma lista de usuários) e os então mesclamos com a apresentação.

    Qual a vantagem disso?

    Hoje nossa apresentação dos dados é feita em HTML, se amanha ou depois precisarmos apresentar estes dados em PDF, não é necessário mexer em uma linha de código do modelo, nem em controllers, apenas criamos uma view que faz o output em PDF e “encaixamos” os dados do modelo a ela.

    Este é um bom tema, hoje em dia, muitos desenvolvedores php utilizam estes padrões (mesmo sem saber que estão utilizando), mas não estão familiarizados com os nomes, talvez por que até então não tinhamos um framework que conseguise implementar uma abstração tão boa utilizando estes padrões. Também acredito que o fato de não ter nenhuma empresa grande ditando os padrões para a comunidade seja um forte motivo para este desconhecimento.

    Desculpe se me passei no tamanho do comentário. hehe

    []’s

  8. Diego Tremper says

    só adicionando ao tópico, também existem padrões para invocar serviços da camada de negócio (model), um exemplo é o Business Delegate que pode ser combinado com o padrão Session Facade utilizado para expor os serviço da cadama de negócios.
    Exemplo:

    | Controller | —–> | Business Delegate | —–> | Session Facade |

  9. Felipe Tonello says

    Ótimo comentário Diego,

    Realmente, o modelo nos traz uma vantagem muito grande para usarmos com o retorno de informações. Pois as informações sempre serão as mesmas(mesmo tipo) o que vamos mudar vai ser a saída que desejamos(viwer).

    Interessante esses padrões Business Delegate e Session Facade. Eles podem ser úteis para nós em quais ocasiões? por exemplo.

  10. J.Elias says

    Cara. Tava fazendo teu exemplo só que deu isso ai embaixo:
    Tem solução?
    Notice: Use of undefined constant ‘pt_BR’ – assumed ‘‘pt_BR’’ in C:\wamp\www\ZF-tutorial\index.php on line 3

    Notice: Use of undefined constant ‘America – assumed ‘‘America’ in C:\wamp\www\ZF-tutorial\index.php on line 4

    Notice: Use of undefined constant Sao_Paulo’ – assumed ‘Sao_Paulo’’ in C:\wamp\www\ZF-tutorial\index.php on line 4

    Warning: Division by zero in C:\wamp\www\ZF-tutorial\index.php on line 4

    Notice: date_default_timezone_set() [function.date-default-timezone-set]: Timezone ID ” is invalid in C:\wamp\www\ZF-tutorial\index.php on line 4

    Notice: Use of undefined constant ‘ – assumed ‘‘’ in C:\wamp\www\ZF-tutorial\index.php on line 7

    Notice: Use of undefined constant ’ – assumed ‘’’ in C:\wamp\www\ZF-tutorial\index.php on line 7

    Notice: Use of undefined constant ‘ – assumed ‘‘’ in C:\wamp\www\ZF-tutorial\index.php on line 7

    Notice: Use of undefined constant lib’ – assumed ‘lib’’ in C:\wamp\www\ZF-tutorial\index.php on line 8

    Notice: Use of undefined constant ‘ – assumed ‘‘’ in C:\wamp\www\ZF-tutorial\index.php on line 8

    Notice: Use of undefined constant app – assumed ‘app’ in C:\wamp\www\ZF-tutorial\index.php on line 8

    Notice: Use of undefined constant models – assumed ‘models’ in C:\wamp\www\ZF-tutorial\index.php on line 8

    Warning: Division by zero in C:\wamp\www\ZF-tutorial\index.php on line 8

    Notice: Use of undefined constant ’ – assumed ‘’’ in C:\wamp\www\ZF-tutorial\index.php on line 9

    Warning: Division by zero in C:\wamp\www\ZF-tutorial\index.php on line 9

    Warning: include(Zend/Loader.php) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\ZF-tutorial\index.php on line 12

    Warning: include() [function.include]: Failed opening ‘Zend/Loader.php’ for inclusion (include_path=’‘’;‘lib’;‘;.;C:\php5\pear’) in C:\wamp\www\ZF-tutorial\index.php on line 12

    Fatal error: Class ‘Zend_Loader’ not found in C:\wamp\www\ZF-tutorial\index.php on line 15

  11. Felipe Tonello says

    Respondi para você diretamente no e-mail, mas foi como eu disse: isso é provavelmente erro na hora de setar os includes paths..

  12. Bruno Henrique says

    Cara to com um probleminha!

    Quando vo editar o httpd.conf e vo procurar essa linha:
    AddModule mod_rewrite.c pra editar, ela não existe e se tento adicionar ela, meu apache não roda mais!

    q q eu tenho que fazer!???

    e outra, no ZF ta dando um erro no arquivo Registry.php, na seguinte linha:

    protected static function init()
    {
    // ta dando o sehuinte erro nessa linha:
    “)’ expected in function call(self).”
    self::setInstance(new self::$_registryClassName());
    }

    que não consigo resolver de jeito nenhum!

    Se voc puder me ajudar aí.

    Desde já agradeço,

    Bruno Henrique P. de Abreu

  13. Daniel Pinna says

    Fala felipe,

    Fiz seu exemplo direitinho e não consegui sucesso.
    Quando acesso a url pura: http://localhost/ZF-tutorial
    Gera o erro 400 e a página fica em branca.
    Quando acesso a url completa: http://localhost/ZF-tutorial/index/index:
    Gera os seguintes erros:

    Notice: Use of undefined constant E_STRICT – assumed ‘E_STRICT’ in c:\easyphp1-8\www\zf-tutorial\index.php on line 2

    Notice: Use of undefined constant ‘pt_BR’ – assumed ‘‘pt_BR’’ in c:\easyphp1-8\www\zf-tutorial\index.php on line 3

    Parse error: parse error, expecting `T_OLD_FUNCTION’ or `T_FUNCTION’ or `T_VAR’ or `’}” in c:\easyphp1-8\www\zf-tutorial\lib\Zend\Loader.php on line 52

    Já fiz e refiz seu tutorial várias vezes. Testei com apache 2.2, php5 e mysql 5.
    Depois tb tentei com o kit do easyphp, que vem com apache 1.3, acho que php e mysql 4. Tb deu o mesmo erro.
    Tem alguma idéia aí??

    Abs,
    Daniel

  14. Felipe Tonello says

    Bruno Henrique,
    É só você retirar ou comentar essa linha do httpd.conf
    Sobre o registry mande outras informações porque achei estranho o erro.

    Daniel Pinna,
    O erro no seu caso está no php.ini pois não deve estar setado corretamente a configuração para mostrar erros.
    Então é só comentar essa linha de erro, pega nada.
    Agora a do pt_BR o que deu para perceber foi que você usou ela como constante(pt_BR) e não como string(“pt_BR”)

    Agora esse erro que aparece, é bem provavel que seja de sintaxe..
    não da para saber qual erro é apenas vendo o erro..
    Se quiser mande para mim o código, eu vou dar uma olhada e respondo via e-mail..

    Abr,
    Felipe

  15. Elfrancio Granjense says

    Gostei, muito bom!

  16. Felipe Tonello says

    Obrigado Elfrancio

    Até mais

  17. Ricardo Klein says

    humm….
    olha só, criei um controller chamdo AdminController.php
    com as actions init() e indexAction(), semelhante ao seu tutorial
    la no views/scripts criei a pasta admin e dentro dela index.phtml

    mas na hora que eu chamo localhost/admin
    ele dá erro 404 NOT FOUND

    detalhe, nao tenho nenhum IndexController…..

    ta errado? o Zf nao deveria abrir o AdminController e mostrar o indexAction dele?

    Klein

  18. Felipe Tonello says

    Klein:

    Então, você tem que depurar isso.
    Crie um IndexController, com indexAction() com o views/scripts/index/index.phtml
    Tente acessar o template do indexAction() criado. E veja, se der esse erro é um erro seu e não do ZF. Agora, se entrar, quer dizer que o ZF precisa de um IndexController. Estranho pois nunca li isso.

    Att,
    Felipe

  19. Ricardo Klein says

    hehe,
    interessante é que eu estou usando a mesma estrutura que eu tinha no tutorial do Akrabat, e esta estava funcionando 100%, até criei outro Action no index controller que fiz pro tutorial pra fazer upload de arquivos e foi……..

    será que ele precisa de um IndexController, mesmo que eu não vá utilizá-lo? pelo menos não agora…

    vou colocar o IndexController do tuto do Akrabat e tentar acessar o /admin, se funcionar é porque precisa do IndexController, se não funcionar vou tentar acessá-lo à partir do IndexController……

    mais tarde eu posto aqui pra te dizer o que aconteceu

  20. Ricardo Klein says

    Ow Tonello?
    hehe, quando eu copiei a pasta para pegar a estrutura os .htaccess não vieram junto, por isso não estava funcionando

    se quiser apaga estes meus 3 posts, pra não acabar confundindo ninguém……..hehe estupidez minha….

  21. Felipe Tonello says

    Hehehe sem problemas..
    É legal que ajuda outros que também possam ter esse mesmo problema!

    Att

  22. Gian says

    Felipe

    Assisti a sua palestra sobre ZEND, da Tempo Real Eventos, não conseguia trabalhar com nenhum framework por ser iniciante com PHP e por tentar entender códigos por dedução sem manual e tudo mais, mas as vezes precisamos de um “empurrãozinho”, pois bem…

    baixei o site da imobiliária e vi que as configurações de acesso ao BD vc pois no config.ini, gostaria de saber onde e como vc puxa aquele arquivo pra fazer a conexão, e eu aqui uso o MSSQL, vc declarou um adapter = PDO_MYSQL
    se eu por adapter = PDO_MSSQL funciona?

    Uso algumas funções minhas, onde devo armazenálas? junto com a lib do Zend? crio um arquivo ou ponho em algum qqr que esteja lá!?

    Obrigado

  23. FLAVIO GOMES DA SILVA LISBOA says

    Olá, Felipe. Tudo bem?
    Eu desenvolvi um material para treinamento no Zend Framework e estou disponibilizando o conteúdo no meu site:
    http://www.fgsl.eti.br/linguagens-de-programacao
    O curso foi feito com a versão 1.0.1, e, aproveitando a nota do colega Gian, usando PostgreSQL.
    Quero agradecer porque esse material foi resultado da pesquisa que fiz com base no livro do Minetto e em sua palestra na FIT.
    Inclusive, se você tiver críticas a fazer, eu agradeço.

  24. Patricia Chapetta says

    Felipe,
    estou tentando fazer algum aplicativo com Zend Framework funcionar na minha máquina e não estou conseguindo, quando executo pelo IE ocorre o erro “Objeto não Encontrado” … “Error 404″.
    Implementei todo tutorial do zf-tutorial, baixei a aplicativo Cadastro do site Cantinho do Zend Framework, fiz todas as configurações no .htaccess ou no httpd.conf, e ocorre o erro acima.
    Pelo ZEND Studio eu consigo executar a tela principal do zf-tutorial, porém quando seleciono qualquer link não redireciona para outra página, dá o erro “blank.dummy.php/index/add”.
    Nunca programei em PHP para WEB só programei em Java, por favor, poderia me ajudar, ou me indicar algum material mais detalhado que possa e ajudar.

    P.S.: Eu baixei o XAMPP e coloquei os códigos fontes dentro do diretório c:\xampp\htdocs\…

    Obrigada!
    Patricia Chapetta

  25. Felipe Tonello says

    Olá, tudo bom?

    Então.. do jeito que você está descrevendo eu realmente não sei o que pode ser..
    Você já tentou fazer de maneira bem simples? Como um “Olá Mundo” ? Funcionou?

    Att,
    Felipe Tonello

  26. Carlitos says

    Felipe,

    Já esperimentou (ou já conhece) o Lumine (http://www.hufersil.com.br)? Segundo o Hugo, autor do projeto, o Lumine é um framework que “visa facilitar o desenvolvimento de aplicações web com integração à banco de dados, tornando as tarefas mais comuns como consultas, atualizações, inserções e remoções mais fáceis e descomplicadas, uma vez que trabalha com os registros como se fossem objetos”.

    Abs!

  27. Alexandre says

    olá. Se eu digitar apenas o http://localhost/ZF-tutorial ele acessa a pagina normalmente e mostra o que deveria mostra. Porém, se eu acesso o http://localhost/ZF-tutorial/index/index, ele diz que não consegue achar a página e da o erro 404. O certo seria as 2 urls funcionarem do mesmo jeito. sabe o q posso estar fazendo errado?

  28. Ciro Junior says

    Ótimo tutorial Felipe ,
    porém na versão 1.6.1 do Zend não funcionou =/ …
    Vc sabe me informar as diferenças nas configurações?
    Obrigado!

  29. Ciro Junior says

    PS: pq seu script não conseguiu identificar meu browser e meu SO?
    oO
    =D

  30. johnny says

    não consigo baixar o zend, como faço passo a passo,
    obrigado

  31. Raphael Azeredo says

    Felipe, fiz o tutorial original do seu tutorial: http://akrabat.com/wp-content/uploads/getting-started-with-the-zend-framework_142.pdf e estou com o seguinte problema, quando acesso http://localhost/zf-tutorial/ ele me retorna Meus Albuns, agora quando eu acesso http://localhost/index/index ele retorna que a página não existe :( sabe o que pode ser?

    Obrigado

  32. Gedson Marcelino says

    Muito bom! Bem explicado e funcionou direitinho.

    parabéns

  33. Fabricio Souza says

    Olá Felipe, gostaria de dizer que estou acompanhando seu site e que é muito interesante seus post, se possivel gostaria que me solucionace uma dúvida, estou começando agora com zend e queria perguntar como faço para incluir o css na página, pois não estou conseguindo..

    Obrigado, e t+

  34. Vinicius says

    Muito bom trabalho. Aqui pegou blz.

    Agradeço!!!

  35. Gilberto Albino says

    Olá, felipe.
    Cara já estou a 2 meses tentando fazer o Framework fazer funcionar outro view além do index.
    Eu já tentei no windows e no linux, configurei 300 coisas
    e só consigo acessar o view do index.
    Se eu criar uma estrutura para Usuarios não acontece nada.
    Já estou quase desistindo desta coisa ai.
    Se puder criar um post de como criar outro além do index ia ficar grato.

  36. Fabio says

    as tags estão aparecendo assim : </body>

  37. Carlos Alan says

    Parabéns, ótimo tutor.
    Aqui na empresa que eu trabalho, meu chefe anda falando muito sobre o Zedn FW.. To dando meus pulos pra aprender, mas putz.. vendo esse tutor aí.. não é n um bixu de 7 cabeças..

    Só uma dúvida..
    toda vez que eu criar um action no controlador.. vou ter que criar uma view pra ele? como eu faço pra ter apenas um action.

  38. Carlos Eduardo says

    Parabéns pelo tutorial! Muito bem explicado. Consegui instalar numa boa.

    Um abraço!

  39. Vedovelli says

    Um post tao caprichado e nenhum comentário! Ô comunidade ingrata!! Obrigado por postar, amigo!

  40. Bruno Gonçalves says

    Muito bom tutorial, simples e rápido, porem ao chamar a pagina recebo um 500, internal error. Como devo proceder?

    Valeu

  41. Luiz Nardelli says

    Olá Felipe, gostaria que você me orientasse em um problema que estou enfrentando com o Zend, é possível ? Olha só, tenho que acessar via Zend dois bancos dados diferentes, não é acesso simultâneo, o usuário escolhe qual deseja acessar, sendo que cada um possui módulos específicos para cada área, como estou migrando para php + Zend me deparei com este problema…
    Tenho a estrutura no bootstrap configurada através de um arquivo ini para acesso as configurações do banco de dados, mas não estou conseguindo logar automaticamente no outro banco de dados…
    É possível realizar esta operação ?

  42. giuliano says

    cara, fiz igual aqui, e quando acesso a index localhost/zf-tutorial/ ele funciona, mas quando digito localhost/zf-tutorial/index/index ele não acha nada..e nem criando a zfAction lá e a view zf.phtml ele funciona! criei o controller e tudo e não funciona ! ele não acha o caminho digitado na barra de endereços

  43. Thalles says

    Oi Felipe
    segue o seu tutorial
    mais quando chamo a pagina ele me retorna
    um erro
    “500 Internal Server Error”

  44. Pablo says

    Felipe, aqui também deu erro na linha 17:
    Fatal error: Class ‘Zend_Loader’ not found in…

    Como posso revolver?

    Obrigado!

  45. Hugo says

    está aparecendo o seguinte erro:

    Fatal error: Uncaught exception ‘Zend_Controller_Dispatcher_Exception’ with message ‘Invalid controller specified (index)’ in D:\EasyPHP 3.0\www\ZF-tutorial\lib\Zend\Controller\Dispatcher\Standard.php:242 Stack trace: #0 D:\EasyPHP 3.0\www\ZF-tutorial\lib\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 D:\EasyPHP 3.0\www\ZF-tutorial\index.php(31): Zend_Controller_Front->dispatch() #2 {main} thrown in D:\EasyPHP 3.0\www\ZF-tutorial\lib\Zend\Controller\Dispatcher\Standard.php on line 242

    Pode me ajudar?

Continuing the Discussion

  1. Blog do Klein » Blog Archive » Vamos aprender ZendFramework linked to this post on October 2, 2007

    [...] para acessarem diretamente o link do tutorial que ele fez sobre ZF clique aqui. [...]



Some HTML is OK

or, reply to this post via trackback.