Tutorial: Zend Framework

Postado em Desenvolvimento WEB por Felipe Tonello on the November 3rd, 2006


Ajude a Combater o Spam! Clique aqui!

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.

  1. cd ~/ZendFramework-1.0.1/library
  2.  
  3. 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:

  1. LoadModule rewrite_module modules/mod_rewrite.so

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

  1. AccessFileName .htaccess

Setar a opção AllowOverride como All.

Trocar as linhas abaixo:

  1. #<Directory />
  2.  
  3. # Options Indexes FollowSymLinks
  4.  
  5. # AllowOverride None
  6.  
  7. #</Directory>

por:

  1. <directory>
  2.  
  3. Options FollowSymLinks Includes
  4.  
  5. AllowOverride All
  6.  
  7. </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

  1. RewriteEngine on
  2.  
  3. RewriteRule .* index.php
  4.  
  5. php_flag magic_quotes_gpc off
  6.  
  7. 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

  1. 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

  1. deny from all

ZF-tutorial/lib/.htaccess

  1. 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

  1. <?php
  2.  
  3. 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)
  4.  
  5. setlocale (LC_ALL, ‘pt_BR’);
  6.  
  7. date_default_timezone_set(‘America/Sao_Paulo’);/* Seta include path para o funcionamento correto do framework ***OBRIGATÓRIO*** */
  8.  
  9. set_include_path(‘.’.PATH_SEPARATOR.‘./lib’
  10.  
  11. .PATH_SEPARATOR.‘./app/models/’ //facilitar depois ao loadar as nossos modelos
  12.  
  13. .PATH_SEPARATOR.get_include_path());
  14.  
  15. /* Necessário para loadar qualquer outra classe do framework ***OBRIGATÓRIO*** */
  16.  
  17. include "Zend/Loader.php";
  18.  
  19. //loada o controller front
  20.  
  21. Zend_Loader::loadClass(‘Zend_Controller_Front’);
  22.  
  23. /*
  24.  
  25.  Essa classe se encontra em Zend/Controller/Front.php
  26.  
  27.  Pode ser loadado diretamente pelo nome se preferir
  28.  
  29.  Para começar nós precisamos loadar primeiro o front controller
  30.  
  31.  Ele faz um controle automático para detectar a base URL e fazer o redirecionamento correto
  32.  
  33.  */
  34.  
  35. $controlador = Zend_Controller_Front::getInstance();
  36.  
  37. $controlador->throwExceptions(true); // mostrar excessões(apenas para testes)
  38.  
  39. $controlador->setControllerDirectory(‘./app/controllers’); // seta diretório com nossos controllers
  40.  
  41. //Roda o sistema
  42.  
  43. $controlador->dispatch();
  44.  
  45. //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

  1. <?php
  2.  
  3. class IndexController extends Zend_Controller_Action
  4.  
  5. {
  6.  
  7.   public function indexAction()
  8.  
  9.   {
  10.  
  11.     $this->view->titulo = ‘Primeiro Tutorial de Zend Framework’;
  12.  
  13.     $this->view->detalhe = ‘Olá Mundo!’;
  14.  
  15.   }
  16.  
  17. }

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:

  1. cd documentRoot_do_apache/ZF-tutorial/app/views/scripts
  2.  
  3. mkdir index

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

  1. <html>
  2.  
  3. <head>
  4.  
  5.   <title><?php echo $this->escape($this->titulo); ?></title>
  6.  
  7. </head>
  8.  
  9. <body>
  10.  
  11.   <?php echo $this->escape($this->detalhe); ?>
  12.  
  13. </body>
  14.  
  15. </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!!

31 Comentários para 'Tutorial: Zend Framework'

Assine os comentários RSS ou TrackBack para 'Tutorial: Zend Framework'.

  1. Pedro Knofftoski disse,

    em February 23rd, 2007 às 12:34 pm

    Usando Internet Explorer Internet Explorer 6.0 no Windows Windows XP

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

  2. Diego Tremper disse,

    em August 1st, 2007 às 11:59 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Windows Windows XP

    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 disse,

    em August 2nd, 2007 às 4:16 pm

    Usando Debian IceWeasel Debian IceWeasel 2.0.0.5 no Debian GNU/Linux Debian GNU/Linux

    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. em August 2nd, 2007 às 4:28 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    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 disse,

    em August 2nd, 2007 às 4:42 pm

    Usando Debian IceWeasel Debian IceWeasel 2.0.0.5 no Debian GNU/Linux Debian GNU/Linux

    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. em August 2nd, 2007 às 5:04 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    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 disse,

    em August 3rd, 2007 às 3:00 am

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Windows Windows XP

    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 disse,

    em August 3rd, 2007 às 3:14 am

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Windows Windows XP

    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. em August 3rd, 2007 às 10:38 am

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    Ó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 disse,

    em August 6th, 2007 às 7:43 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Windows Windows XP

    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. em August 14th, 2007 às 11:00 am

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    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 disse,

    em August 21st, 2007 às 9:47 am

    Usando Mozilla Firefox Mozilla Firefox 2.0 no Windows Windows XP

    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 disse,

    em August 24th, 2007 às 9:05 am

    Usando Internet Explorer Internet Explorer 7.0 no Windows Windows XP

    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. em August 24th, 2007 às 10:44 am

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    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. em October 2nd, 2007 às 11:18 am

    Usando WordPress WordPress 2.2.3

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

  16. em October 2nd, 2007 às 10:02 pm

    Usando Internet Explorer Internet Explorer 7.0 no Windows Windows Vista

    Gostei, muito bom!

  17. em October 4th, 2007 às 2:15 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    Obrigado Elfrancio

    Até mais

  18. Ricardo Klein disse,

    em October 9th, 2007 às 11:36 am

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    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

  19. em October 9th, 2007 às 11:50 am

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    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

  20. Ricardo Klein disse,

    em October 9th, 2007 às 10:02 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    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

  21. Ricardo Klein disse,

    em October 9th, 2007 às 11:04 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    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….

  22. em October 10th, 2007 às 9:38 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

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

    Att

  23. Gian disse,

    em October 18th, 2007 às 4:05 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.7 no Windows Windows XP

    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

  24. em October 24th, 2007 às 3:16 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux

    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.

  25. Patricia Chapetta disse,

    em April 23rd, 2008 às 1:16 pm

    Usando Internet Explorer Internet Explorer 6.0 no Windows Windows 2000

    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

  26. em April 23rd, 2008 às 1:45 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.14 no Windows Windows XP

    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

  27. Carlitos disse,

    em June 2nd, 2008 às 1:31 pm

    Usando Mozilla Firefox Mozilla Firefox 2.0.0.14 no Windows Windows XP

    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!

  28. Alexandre disse,

    em July 14th, 2008 às 11:12 am

    Usando PHP PHP

    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?

  29. Ciro Junior disse,

    em October 2nd, 2008 às 9:49 am

    Usando PHP PHP

    Ó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!

  30. Ciro Junior disse,

    em October 2nd, 2008 às 10:27 am

    Usando PHP PHP

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

  31. johnny disse,

    em November 8th, 2008 às 6:07 am

    Usando Mozilla Firefox Mozilla Firefox 3.0.3 no Windows Windows XP

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

Comente!