Solicitações Ajax com Zend Framework

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.

3 comentários sobre “Solicitações Ajax com Zend Framework”

  1. onde está “function produtos()” —> seria “function produtosAction()”

    e onde está “php endforeach:” —> seria “php endforeach;”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *