Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Zend Framework - Exemplos basicos I
Pessoal segue a sequencia de mais um tutorial sobre ZF
quem não viu os tutoriais anteriores aqui estão os links:
rodando esse link automaticamente o ZF procura pelo arquivo: IndexController.php
e qualquer link que voce criar dentro do index:
http://www.meu_site.com.br/index/pagina1
http://www.meu_site.com.br/index/pagina2
http://www.meu_site.com.br/index/pagina3
http://www.meu_site.com.br/index/pagina4
o ZF ira procurar dentro do arquivo IndexController.php o action com o mesmo nome:
<?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
}
public function pagina1Action()
{
}
public function pagina2Action()
{
}
public function pagina3Action()
{
}
public function pagina4Action()
{
}
}scripts/index/index.phtml
scripts/index/pagina1.phtml
scripts/index/pagina2.phtml
scripts/index/pagina3.phtml
scripts/index/pagina4.phtml
se voce não quiser ou não precisar de um layout para uma pagina basta avisar o ZF que não tera layout assim:
public function indexAction()
{
$this->_helper->removeHelper('viewRenderer');
}
com isso voce nao precisa ter um index.phtml e o ZF não ira dar erro tentando procura-lo.
agora um exemplo simples para envio de dados de um formulario e recebendo usando ZF
no exemplo em anexo esta o sistema funcionando, por isso não se preocupem com detalhes
para verificar se um formulario foi enviado usem:
if ($this->_request->isPost()) {}
para receber um dado de um campo GET ou POST use:
$campo = $this->_request->getPost('campo');
só que ja tem uma vantagem, se o $_POST["campo"] não existir o ZF vai tratar e a $campo tera um valor vazio, e sem ter erro na pagina.
segurança, o ZF tem uma classe para cuidar da segurança de recebimento de dados, com varias opções, iremos tratar só do filtro trim e strip_tags como no exemplo:
$filter = new Zend_Filter();
$filter->addFilter( new Zend_Filter_StringTrim )
->addFilter( new Zend_Filter_StripTags );
$campo = $filter->filter($this->_request->getPost('campo'));
com isso eu ja pego a $_POST["campo"], passo a função trim e strip_tags e automaticamente passando pelo filtro ela ja se torna uma string segura para ser usada ou salva em banco de dados.
qualquer duvida sobre o exemplo só perguntar
OBS: Pasta Library vazia.
Proximo tutorial:
Isso mesmo todos os nomes foi eu que criei voce pode criar o link que quiser por exemplo
public function cadastroAction(){}
public function meulinkAction(){}
public function salvarAction(){}
etc..., isso fica a seu gosto.
e dentro dos action voce coloca o que quiser o nome link foi eu que criei voce coloca o nome que quiser
exemplo
public function indexAction()
{
$this->view->var1 = "Valor da var1";
$this->view->var2 = "Valor da var2";
$this->view->var3 = "Valor da var3";
}
e no index.phtml:
<?php
echo $this->var1."<br />";
echo $this->var2."<br />";
echo $this->var3."<br />";
?>
como voce citou o action "validar", veja uns exemplos sobre validações de formularios:
http://akrabat.com/2008/02/21/simple-zend_form-example/
http://framework.zend.com/manual/en/zend.filter.input.html
no primeiro link acima se voce olhar vera que o proprio ZF ja tem meios de validar um formulario, entao nao seria necessario criar um action validar, só usar o if ($form->isValid($formData)) {, como mostra o exemplo acima
humm... certinho, valeu, peguei o embalo da coisa aqui entendi /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/cool.gif&key=f49ff0bf62d93b7ae981516c2c69b852e12d189e1252e1503d11b9903c6ba0ed" alt="Imagem Postada" />
beleza, é facil, só pegar o jeito, voce vai ver como fica mais facil fazer as coisas e mais rapido, fors o sistema que passa a ficar mais profissional e seguro
É, eu tava dando uma olhada na estrutura de algumas class aqui, são bem profissionais, além do mais é bom porque já começo OOP por um bom caminho, pois eu sou fraco em class ainda.
Enquanto aos links assima, são bem legais os exemplos, dão outra dimensão para validação de dados.
Muito bacana...
Agora acho que Zend irá ganhar novos usuarios.
Parabéns Fabyo, você é o cara :kiss:
dúvidas em alguns pontos:
bem, criei e etc...só que percebi que a referências as variaveis criadas.. ( link ou var1 ...) é feita dentro de index.phtml.
sendo assim, qual a função de ter um layout pra cada já que é o index.phtml que trata todos(no exemplo: imprime as variaveis)?
os arquivos pagina1.phtml , pagina1.phtml[b/] ... vão ficar vazios?
se puderem ajudar-me a entender...agradeço. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/wink.gif&key=0566fd943552bcff9cb1b879403ca34b5ff8f67befaac7fe4648006e9f764689" alt="Imagem Postada" />
- como crio esses links?
do mesmo jeito que esta no exemplo, crie um nome do link, a pagina com o mesmo nome e o metodo com o mesmonome+Action
- a init(), qual a função dela?
a função inicial que inicia antes dos outros metodos
para ver mais detalhes e outros metodos como esse:
http://framework.zend.com/manual/en/zend.c...ler.basics.html
**- para cada método criado dentro de IndexController.php, deve criar um *.phtml dentro de script/index, correto?**
Correto
[quotebem, criei e etc...só que percebi que a referências as variaveis criadas.. ( link ou var1 ...) é feita dentro de index.phtml.
sendo assim, qual a função de ter um layout pra cada já que é o index.phtml que trata todos(no exemplo: imprime as variaveis)?
nao cada variavel tem o seu valor definido pelo metodo se no indexAction eu crio uma variavel ela vai valer para index.phtml, posso ter variaveis com nomes iguais, mas o valor dela é colocado no metodo
os arquivos pagina1.phtml vão ficar vazios?
Nao, as paginas.phtml sao suas paginas como é só um exemplo elas nao tem conteudo, mas no seu caso quando for fazer algum site usando ZF voce coloca o conteudo que precisar
certo fabyo.
os links eu crio dentro do index principal do ZF?
a questão dos métodos consegui compreender..somente os links que não.. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/biggrin.gif&key=cb0fdb2382312b39ddcb15831fcae62157015f17d2417528782628663387e929" alt="Imagem Postada" />
[]´s
os links que cria apartir do seu primeiro controller, por padrao é o indexcontroller.php com o metodo indexAction()
mas isso tudo pode mudar conforme for preciso
mas por padrao voce cria os links apartir do index e os links voce cria no templates
no exemplo de templates eu criei 4 exemplos de links só dar uma olhada
sim fabyo.
o que digo é:
esses links seriam as tags <a href='' ?
desculpe te incomodar, porque não consegui fazer esse exemplo.
nao os links que eu falo sao o resultado onde o link ira levar o usuario
voce pode criar seus link HTML normalmente usando <a href=""
isso nao muda nada
o local onde seu link aponta que sim, por exemplo
<a href="index/listar">listar</a>
quando o usuario clicar nesse link ele ira para a pagina
www.meusite.com.br/index/listar
e o metodo que o ZF ira procurar no indexcontroller.php é o listarAction
public function listarAction()
{
}
entendeu?
em qual arquivo irei colocar ?
<a href="index/listar">listar</a>
nos templates, nos arquivos .phtml
>
Zend Framework - Exemplos basicos I
Pessoal segue a sequencia de mais um tutorial sobre ZF
quem não viu os tutoriais anteriores aqui estão os links:
rodando esse link automaticamente o ZF procura pelo arquivo: IndexController.php
e qualquer link que voce criar dentro do index:
http://www.meu_site.com.br/index/pagina1
http://www.meu_site.com.br/index/pagina2
http://www.meu_site.com.br/index/pagina3
http://www.meu_site.com.br/index/pagina4
o ZF ira procurar dentro do arquivo IndexController.php o action com o mesmo nome:
<?phpclass IndexController extends Zend_Controller_Action{ public function indexAction() { } public function pagina1Action() { } public function pagina2Action() { } public function pagina3Action() { } public function pagina4Action() { } }
Não sei o que fiz de errado, mas não consigo obter essa configurção. Sempre que crio por exempo: index/pagina1/ preciso criar um controlador para a pagina1 e criar um index action.
Alguém pode me ajudar?
Obrigado
Rogers
Como você ta criando os links?
ou você ta testando o exemplo do topico?
Como você ta criando os links?
ou você ta testando o exemplo do topico?
Ai onde está.
veja o link: http://www.consultingpalace.com/projects/africa/
muitos links estão por fazer
mas veja o que o código de erro pede.
Podes me elucidar um pouco?
Obrigado
Rogers
Ah esqueci-me
user:vamsi
pass:seoseo
ola fabio sou novo aqui no forum mas estou pegando bem seu tutorial, o q esta acontecendo é o seguinte :
quando eu vou em
onde esta o seu segundo zip q baixei do tutorial beleza aparece :
Index
pagina2
como era pra acontecer, porem quando eu clico no link ele me redireciona para :
http://localhost/index/pagina2
ate ai beleza, pelo q vi no tutorial era realmente para aontecer isso , mas da como pagina não encontrada, seria alguma configuração do apache o meu é a verção 2.0 não a 2.2 e esta habilitado o .htaccess
da pagina não encontrada pq não tem nada lá, era pra ele pegar por exemplo da pagina2.phtml correto? voce saberia me dizer o q esta acontecendo?
obrigado
seu mod_rewrite está hablitado no apache?
sim esse modulo esta habilitado no Apache
LoadModule rewrite_module modules/mod_rewrite.so
no local ond esta o zend
"C:\Arquivos de programas\Apache Group\Apache2\htdocs\Zend_Inicio"
esta esse .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
Options –Indexes
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag short_open_tag on
tudo normal imagino ?
quando você clica no link se tivesse funcionando o mod rewrite nao apareceria "index" ficaria so
se seu servidor for a locaweb o erro pode estar no proprio .htaccess porque na locaweb eles nao aceitam nenhum parametro que mecha com o php.ini
entao se esse for o caso deixe seu .htaccess so com isso:
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
.
desculpa eu sei q ja esta ficando chato, mas eu ja tinha alterado o .htaccess para o q ja tinha no tutorial, como voce acabou de postar, mas o erro persiste,
quando eu fui instalar o servidor na minha maquina eu não ultilizei o XAMPP, eu instalei um por um , apache o 2.0 , o php 5 , o mysql(q ate então não vem ao caso), e configurei tudo que preciseva na mão, inclusive o php so esta carregando 3 .dll
php_gd2.dll
php_mbstring.dll
php_mysql.dll
que foi o necessario ate agora para minhas atividades aqui no pc, sera q talvez o xampp no caso carrege, ou tenha alguma configuração diferente disso q possa talvez esta fazendo a diferença, caso msm assim o erro continuar irei instalar ele para ter certeza q não é isso, porem imagino q não ira resolver
.
:clap:
descobri o que ocorreu é o seguinte:
no apache o
LoadModule rewrite_module modules/mod_rewrite.so
não estava comentada , OK , porem o:
AllowOverride None
estava "None" quando setei para "All" , deu varios erros de PHP , fatal error bla bla bla...
procurei na internet o que poderia ser e achei
http://devzone.zend.com/article/119-Bluepr...trapping-part-2
"q aconselho a verem "
e tbm percebi q quandu eu usava
RewriteEngine on
RewriteRule !.(js|ico|gif|jpg|png|css)$ index.php
esse dois comandos juntos não funcionava ai troquei por :
RewriteEngine on
RewriteBase /zend_inicio
RewriteRule .* index.php
php_flag magic_quotes_gpc off
e todos os diretorios da pasta do tutorial estão passando pela index.php
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/smile.gif&key=15294d64c22e9e9c4ae0bf82a62ec27d13f27d6ba7078a5f7982077798029364" alt="Imagem Postada" />
vlw pela ajuda msm assim vou continuar como o tutorial q parei na part 3 por causa desses pequenos problemas
.
humm...
Legal, mais só uma dúvida básica aqui, dentro desse:
ai ficaria assim como no arquivo IndexController:
e no caso essa função dentro da class:
public function pagina2Action(){} foram criadas por você ? então quando eu for criar um link eu posso fazer isso: public function validarAction(){}... e na hora de usar a class eu já sei...