如何制作与根目录中的单个文件匹配的Catalyst操作?

时间:2009-05-31 08:37:43

标签: perl catalyst

我在创建与根目录中的单个文件匹配的Catalyst操作时遇​​到问题。我想匹配看起来像这样的网址:

http://foo:3000/about.html

我在根控制器中编写了以下操作:

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

但是操作不匹配,Catalyst会运行default操作。我做错了什么?

2 个答案:

答案 0 :(得分:4)

Catalyst subversion中的

rev 10406是针对您的问题的失败测试,​​我们可以确认这是一个错误。这已被永远打破,不幸的是没有人给我们一个错误报告或者“正式”发现它:/

本周我会尝试解决这个问题(或者让别人来修理它),一旦完成,我们将发送5.80005,因为有足够的其他修复程序准备在主干中,这是值得的。

感谢所有带来核心团队注意力的人,唱歌鱼

答案 1 :(得分:2)

好吧,这似乎是某种向后兼容性错误。以下工作(仅在控制器中的其他操作之前声明handle_404操作:

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;

然后运行测试脚本:

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