2010-10-25 29 views
1

Je veux configurer toutes les actions de mon contrôleur en utilisant le fichier de configuration de mon application. Selon Catalyst::Controller Je peux le faire dans le contrôleur lui-même:Comment puis-je configurer toutes les actions Catalyst dans un contrôleur donné en utilisant Config :: General?

__PACKAGE__->config(
    action => { 
     '*' => { Chained => 'base', Args => 0 }, 
    }, 
); 

J'ai donc essayé dans ma config:

<controller Foo> 
    <action "*">                 
     Chained base 
     Args 0 
    </action> 
</controller> 

mais je reçois cette erreur au démarrage:

Couldn't load class (MyApp) because: Action "*" is not available from 
controller MyApp::Controller::Foo at /usr/local/share/perl/5.10.1/Catalyst/ 
Controller.pm line 193 

Il fait la même chose sans les guillemets autour de l'astérisque. Comment dois-je faire cela?

Répondre

3

Ceci est couvert dans The Definitive Guide to Catalyst

Prenez la source téléchargeable à partir de cette page, décompressez, accédez à l'application DwarfChains au chapitre 7, puis ajouter ce qui suit à dwarfchains.conf:

<Controller People> 
<action get_ready> 
    PathPart nama 
</action> 
</Controller> 

<Controller People::Info> 
<action get_info_ready> 
    PathPart siapa 
</action > 
<action create> 
    PathPart lagi 
</action > 
<action delete> 
    PathPart mengusir 
</action > 
</Controller> 

Ce devrait plus ou moins démontrer comment remplacer la répartition par configuration.

+0

Mon point était de savoir comment cal configurer toutes les actions, en utilisant un caractère générique. Dans la configuration du contrôleur, je peux le faire (à partir de http://search.cpan.org/~bobtfish/Catalyst-Runtime/lib/Catalyst/Controller.pm#action): '*' => {Chained => 'base' , Args => 0}, Mais en utilisant Config :: General j'obtiens l'erreur ci-dessus – cubabit

+0

Ce que je ferais dans votre cas est de faire un cas de test minimal en utilisant la configuration du contrôleur en ligne comme documenté, puis sérialiser la configuration en utilisant ce qui suit commande pour voir ce que Config :: General s'attend à voir: perl -Ilib -e 'utilise MyApp; utilisez Config :: General; Config :: General-> new-> save_file ("myapp_testing.conf", MyApp-> config); ' – singingfish

+0

Sonné comme une bonne idée, mais n'a malheureusement pas aidé. Config :: Sortie générale: <*> Base chaînée ce qui est ce que je m'attendais. Mais, mettant cela dans ma configuration d'application a soulevé la même exception dans Catalyst comme documenté ci-dessus. Semble le problème est avec l'analyse de Catalyst de la config. – cubabit