[Cascavel-pm] Catalyst: Dispatching
Nilson Santos Figueiredo Jr.
acid06 em gmail.com
Sexta Maio 21 08:44:52 PDT 2010
2010/5/21 Ednardo Lobo <ednardo em lobo.eti.br>:
> Porém, no Catalyst, não consegui ainda compreender muito bem como seria esse
> fluxo de execução que, no caso, é orquestrado pelo DISPATCHING. Mas imagino
> que seria assim:
>
> URL: /cliente/mod/3 ou /cliente/3/mod
>
> Execução: MyApp::Cliente -> mod(3) ou MyApp::Cliente::Mod -> do(3)
Vai depender de como você fez as suas chains. Se você "brincar" com o
exemplo que eu postei no email anterior, provavelmente suas dúvidas
serão esclarecidas.
No exemplo, tente mudar nomes de métodos, PathParts e depois as Chains
mesmo pra ver o que acontece. Sempre observe as mudanças que
aconteceram na tabela que o Catalyst imprime assim que o aplicativo
inicia.
> 1) Como enxertar o HTML da operação específica no HTML base?
>
> 2) Atribuir a View para, digamos, $c->stash->{enxerto} é o melhor caminho?
>
> 3) É possível executar isto de forma implícita, ou seja, se nada ao
> contrário for dito o resultado do processamento da View vai direto para
> $c->stash->{enxerto}.
Não é necessário fazer nada disso, o TT vai fazer isso pra você,
usando o comando WRAPPER, como já demonstraram.
Isso, inclusive, independe do Catalyst.
>> package MyApp::Controller::PurchaseOrder;
>>
>> sub base : Chained ('.') CaptureArgs( 0 ) {
>> # lógica que vai ser executada para cada ação nesse controller
>> }
>>
>> [snip]
>>
>> E aí, no seu controlador Root, coloca algo assim, para cada um dos
>> controladores usando esse esquema:
>>
>> package MyApp::Controller::Root;
>>
>> sub purchaseorder : Chained('/') PathPart('purchaseorder') {}
>
> Não compreendi a necessidade desta linha em ::Root?
A action "base" do controller PurchaseOrder encadeia em ".", o que
significa encadear no "chain point" com o nome do namespace atual.
No root você define esse "chain point", para que ele tenha onde encadear.
Provavelmente, no seu Root, você também vai querer algo com base/chain
points, i.e.:
package MyApp::Controller::Root;
sub base : Chained('/') PathPart('') {
# código que será executado para todos os requests Chained
}
sub purchaseorder : Chained('base') PathPart('purchaseorder') {}
> Irei experimentar sim, mas poderia indicar um desses módulos?
Catalyst::Action::REST
CatalystX::CRUD
-Nilson
Mais detalhes sobre a lista de discussão Cascavel-pm