O requestAction chama uma action de qualquer controller, dentro de
uma view/layout
Ele pode retornar uma view renderizada pelo proprio controller (muito
comum com ajax), ou retornar uma variavel
Eu tenho um layout que é mais ou menos assim:
<html>
<head>
css, js, etc
</head>
<body>
<div id="wrapper">
<?php echo $this->requestAction('/banners/showBanner/home',
array('return')); ?>
<?php echo $content_for_layout?>
<?php echo $this->requestAction('/contents/sidebar/', array('return')); ?>
<?php echo $this->requestAction('/contents/footer/', array('return')); ?>
</div>
</body>
esse 'return' diz pro cake para usar apenas a view renderizada por
aquela ação do controller. Se eu tira-lo, ele não renderiza nada, por
default.
Esses controladores pegam a página em questão, e mostram algum
conteúdo de acordo com isso. Para economizar memória (só teria uma
instância da view), eu poderia apenas pegar o resultado daquela
action, e renderizar nessa minha view
<?php echo $this->renderElement('/banners/full', array('banner',
$this->requestAction('/banners/showBanner/home'))); ?>
Se é lento, rápido, comedor de memória, MVC style, ou não, aí não sei muito :)
Ah, no controller, voce pode fazer um monte de outras verificações do
tipo 'se for ajax, renderiza a view, se for request (se a ação está
sendo chamada pelo requestAction() ), se é um request de um
webservice, etc.. aí fica *MOLEZA* fazer uma aplicação acessível e
complexa, mesmo para quem não tem javascript habilitado (celulares,
redes de alta segurança, leitores de tela, googlebot, etc etc)
if( $this->RequestHandler->isAjax()) {return $variavel;/* faz uma
coisa se é ajax */}
elseif( isset ($this->params['requested'])) { return $variavel;/* faz
outra cosia se é um request interno com requestAction() */}
else{ $this->set('nomedavariavel', $variavel); /* não tem jeito, é um
pedido sincrono, de um navegador normal, renderiza tudo normalmente :)
*/}
tem um componente aqui que mostra bem isso:
http://bakery.cakephp.org/articles/view/greater-control-with-webservices-component
e o redirecionador para ajax:
http://bakery.cakephp.org/articles/view/redirects-with-ajax
Abraços
spark
On Nov 12, 2007 10:59 AM, Josenivaldo Benito Junior
<[EMAIL PROTECTED]> wrote:
> Olá Spark,
>
> Pensei que bastasse não existir view para um action somente de
> processamento. Setar as variáveis faz sentido.
>
> Não entendi muito bem o RequestAction.
>
> é isso ai, decifrando o enigma o resultado final é bem melhor.
>
> Valeu
> Abraço.
> Benito
>
--
[livesets] http://djspark.com.br/
[web] http://sydi.net
[filmes] http://melhoresfilmes.com.br
--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Cake PHP Português" do
Grupos Google.
Para enviar mensagens para este grupo, envie um email para
[email protected]
Para anular a inscrição neste grupo, envie um email para [EMAIL PROTECTED]
Para mais opções, visite este grupo em
http://groups.google.com/group/cake-php-pt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---