[SP-pm] Ajuda para entender o modulo HTML::Zoom

Gabriel Andrade de Santana gabiruh at gmail.com
Mon Nov 29 07:53:00 PST 2010


On Nov 29, 2010, at 10:27 AM, Jonhnes Lopes wrote:

> Galera estou tentando fazer um aplicação com o Catalyst
> e na View usar o modulo Zoom, porem estou sentindo um
> pouco de dificuldade, por isso queria que vocês me ajudassem
> me explicando um pouco melhor o que acontece nesse codigo
> abaixo que encontrei no cpan.
> Desde já agradeço a quem puder ajudar.
>
> package MyApp::View::HTML;
>     use Moose;
>     extends 'Catalyst::View::HTML::Zoom';
>
>     package MyApp::Controller::Wobble;
>     use Moose; BEGIN { extends 'Catalyst::Controller' }
>     sub dance : Local {
>         my ($self, $c) = @_;
>         $c->stash( shaking => 'hips' ); O que esta acontecendo aqui???
>     }
O stash é um método acessor que retorna ou modifica um hashref usado  
pra persistir os dados entre as actions e os componentes do Catalyst  
durante uma requisição.

Nesse caso está sendo adicionado ao hash uma chave "shaking" com o  
valor 'hips'.
Isto corresponde a $stash->{shaking} = 'hips'.
>
>     package MyApp::View::HTML::Wobble;
>     use Moose;
>     sub dance {
>         my ($self, $stash) = @_;
>         $_->select('#shake')->replace_content($stash->{shaking}); O  
> que esta acontecendo aqui???
>
>     }

Repare que Controller lá em cima se chama Wobble e a action "dance",  
então, o que o Catalyst::View::HTML::Zoom faz é delegar a renderização  
a uma subrotina com mesmo nome da action e presente em um módulo que  
obedece ao seguinte namespace:

$nome_da_app::View::HTML::$nome_do_controller.

$stash é uma refêrencia para o stash passada à subrotina "dance" pelo  
Catalyst::View::HTML::Zoom e $stash->{shaking} contém o valor que foi  
setado anteriormente na action "dance".

Se você leu a documentação do HTML::Zoom, vai perceber que a última  
linha significa que valor contido em $stash->{shaking} vai substituir  
no template o conteúdo de algum elemento do HTML que possua o id  
"#shake".

>
>     #root/wobble/dance
>     <p>Shake those <span id="shake" />!</p> Qual a diferença desse  
> para...
>
>     /wobble/dance => "<p>Shake those <span id="shake">hips</span>!</ 
> p>"; ...esse
O primeiro é um exemplo de template e a linha comentada acima é o  
diretório que ele deve estar localizado para que o módulo  
Catalyst::View::HTML::Zoom possa encontrá-lo.

O segundo é o HTML retornado ao acessar url "/wobble/dance".


Tem certeza que você leu direitinho a documentação? Você tem dúvidas  
em pontos que são premissas básicas para o uso dos módulos citados no  
email. Como você pretende usar Catalyst sem saber o que é o "stash"?  
Porque usar Catalyst::View::HTML::Zoom sem nem saber como funciona o  
HTML::Zoom?

Bons estudos! :)


More information about the SaoPaulo-pm mailing list