O objetivo deste post é dar uma dica de como utilizar solicitações em Ajax com o Zend Framework, uma vez que todas as solicitações são chamadas carregando layout e views, é preciso definir algumas coisinhas para tudo ficar legal!
Para testar vamos criar um controlador chamado resultado e duas ações index e produtos.
Você pode usar qualquer coisa que quiser ali.
Controlador Resultado
// Salve em application/ResultadoController.php
class ResultadoController
extends Zend_Controller_Action
{
public function init() { // aqui vem a mágica depois }
public function indexAction(){}
}
<strong>Acão Produtos</strong>
lang="php"]
// Salve em scripts/views/resultado/produtos.phtml
<ul>
<?php foreach( $this->produtos as $produto) : ?>
<li><?=$produto;?></li>
<?php endforeach; ?>
</ul>
Para testar o resultado, coloque na Ação index do Controlador o código abaixo:
Acão Index
// Salve em scripts/views/resultado/index.phtml
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<div id="ajax"></div>
<script type="text/javascript">
// pode ser no onload para testes
jQuery( function() {
$.ajax( {
type: "GET",
url: '/resultado/produtos/c/'
+ Math.random(),
success: function( dados ) {
$( '#ajax' ).html( dados )
}
} );
} )
</script>
</body>
</html>
Atualize sua a página index e veja que o ajax carregou tudo, incluindo layout e HTML.
Para fins de testes, vamos fazer o seguinte:
Modifique o método ini() do controlador Resultado e acrescente as linhas abaixo
public function init()
{
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
}
Agora teste novamente atualizando a página, e veja que o conteudo saiu vazio.
Agora modifique apenas o valor de setNoRender(true) para setNoRender(false).
Atualize a pagina e veja que agora, somente o conteúdo da ação produtos foi carregada.
Bom, é isto ai. Alguma coisa errada ou dúvida postem nos comentários.
Posts Relacionados
3 respostas em “Solicitações Ajax com Zend Framework”
onde está “function produtos()” —> seria “function produtosAction()”
e onde está “php endforeach:” —> seria “php endforeach;”
hehe copiou e colou heim? kkkk
Brincadeira! Obrigado, corrigido!
Opa, com certeza copie para testar…hahaha…, digitar dá uma preguiça… Obrigado por corrigir e parabéns pelo tutoriais.