2009-05-31 4 views
0

Ich habe Probleme beim Erstellen einer Catalyst-Aktion, die mit einer einzelnen Datei im Stammverzeichnis übereinstimmen würde. Ich möchte URLs übereinstimmen, die wie folgt aussehen:Wie erstelle ich eine Catalyst-Aktion, die mit einer einzelnen Datei im Stammverzeichnis übereinstimmt?

http://foo:3000/about.html 

Ich habe die folgende Aktion in der Root-Controller geschrieben:

sub static :Path :Args(1) 
{ 
    my ($self, $c, $file) = @_; 
    … 
} 

Aber die Aktion nicht übereinstimmt, Katalysator läuft die default Aktion statt. Was mache ich falsch?

Antwort

2

OK, dies scheint eine Art Abwärtskompatibilität Bug zu sein. Die folgenden Werke (erklären nur die handle_404 Aktion vor den anderen Aktionen in der Steuerung:

package TestApp::Controller::Root; 

use strict; 
use warnings; 
use parent 'Catalyst::Controller'; 

__PACKAGE__->config->{namespace} = ''; 

sub handle_404 :Path { 
    my ($self, $c) = @_; 
    $c->response->body('Page not found'); 
    $c->response->status(404); 
} 

sub anaction :Path : Args(1) { 
    my ($self, $c, $arg) = @_; 
    $c->res->body($arg); 
} 

sub end : ActionClass('RenderView') {} 

1; 

und dann das Testskript auszuführen:

$ CATALYST_DEBUG=0 script/testapp_test.pl /foo 
foo 
+0

Ja, das funktioniert. Vielen Dank. – zoul

4

rev 10406 ​​im Catalyst Subversion ist ein fehlschlagenden Test für Ihre Problem, wir können bestätigen, dass es ein Fehler ist.Dies ist für immer gebrochen, es ist schade, dass niemand uns einen Fehlerbericht gegeben hat oder 'offiziell' es vorher entdeckt:/

Ich werde versuchen, das zu beheben (oder jemanden zu bekommen sonst, um es zu reparieren) diese Woche, und wir werden 5 versenden. 80005 sobald das erledigt ist, da es genug andere Fixes im Kofferraum gibt, damit es sich lohnt.

Vielen Dank an alle, die dies auf die Aufmerksamkeit des Kernteams gebracht haben, singingfish ++