[Cascavel-pm] Catalyst: "Wrapper" e execução de "Private actions"
Ednardo Lobo
ednardo em lobo.eti.br
Terça Maio 25 03:36:03 PDT 2010
Lindolfo,
Verifiquei seu projetinho e resolvi meu problema da seguinte forma:
<div id="head">
[% PROCESS head.tt %]
</div>
<div id="menu">
[% PROCESS menu.tt %]
</div>
<div id="content">
[% content %]
</div>
<div id="foot">
[% PROCESS foot.tt %]
</div>
E quando for necessário um pré-processamento do enxerto (ex: acessar um
Model):
- Controller/Root.pm
sub end : ActionClass('RenderView') {
$c->forward('Head'); # Call Controller::Root::Head::process
$c->forward('Menu'); # Call Controller::Root::Menu::process
$c->forward('Foot'); # Call Controller::Root::Foot::process
}
- Controller/Root/Menu.pm
sub process :Private {
my ( $self, $c ) = @_;
$c->stash->{menu} = [
{ name => 'Loja', url => '/loja' },
{ name => 'Funcionário', url => '/funcionario' },
];
}
- root/menu.tt
Menu:
<ul>
[% FOREACH menu %]
<li>
<a href="[% url %]">[% name %]</a>
</li>
[% END %]
</ul>
Obrigado,
Lindolfo "Lorn" Rodrigues escreveu:
> Ednardo,
>
> Tenho um projetinho de um blog que usa uma estrutura parecida com o que
> você quer, está aqui:
>
> http://github.com/lorn/blog-catalyst/
> Qualquer duvida é só perguntar.
>
> PS: Um dia o blog sai :P
>
> 2010/5/21 Alexei Znamensky <russoz em gmail.com <mailto:russoz em gmail.com>>
>
> Liga não, ele sempre presume isso
>
>
> 2010/5/21 Ednardo Lobo <ednardo em lobo.eti.br
> <mailto:ednardo em lobo.eti.br>>
>
> Daniel,
>
> Por que supõe que não li o manual?
>
> Daniel de Oliveira Mantovani escreveu:
>
> Se você ler o manual do Catalyst, vai ter a noção e muito mais,
> http://search.cpan.org/~hkclark/Catalyst-Manual-5.8004/lib/Catalyst/Manual/Tutorial/01_Intro.pod
>
> O segredo é ler o manual e entender, acompanhar os passos
> facilita.
> "Aquilo que não consigo construir, não consigo entender", do
> físico
> Richard Feynma
>
> 2010/5/21 Ednardo Lobo <ednardo em lobo.eti.br
> <mailto:ednardo em lobo.eti.br>>:
>
> Pessoal,
>
> O template do meu wrapper é algo como segue:
>
> <div id="head">
> [% head %]
> </div>
>
> <div id="menu">
> [% menu %]
> </div>
>
> <div id="content">
> [% content %]
> </div>
>
> <div id="foot">
> [% foot %]
> </div>
>
> Estou querendo estruturar o meu código para enxertá-lo
> com os seguintes
> controladores abaixo:
>
> package Root::Head
> sub <action> : ... {
> }
>
> package Root::Menu
> sub <action> : ... {
> }
>
> package Root::Foot
> sub <action> : ... {
> }
>
> Talvez esteja fazendo algo estúpido, porém estou usando
> o que tenho em mãos,
> ou seja, no raio do meu conhecimento atual sobre o Catalyst.
>
> O enxerto referente ao "content" já é provido da forma
> mágica e tradicional,
> isto é, pela ação mapeada para respectiva URL.
> Infelizmente não descobri
> ainda como executar essas três ações sempre que uma
> requisição for feita,
> independente da URL e assim prover os outros enxertos.
> Nem mesmo descobri
> como direcionar o resultado de suas Views para as
> respectivas variáveis.
>
> A idéia que veio foi utilizar um das "special private
> actions": begin, end,
> default e auto, encadeada a ação dos meus controladores
> Head, Menu e Foot. A
> dificuldade é que não tenho a mínima idéia de como fazer
> isto, nem mesmo por
> qual ação iniciar o encadeamento.
>
> Isso funcionaria? Há algum outro método recomendado?
>
>
> Grato,
--
Ednardo Lobo
www.lobo.eti.br
Mais detalhes sobre a lista de discussão Cascavel-pm