[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