0

我无法创建与根目录中的单个文件匹配的 Catalyst 操作。我想匹配如下所示的 URL:

http://foo:3000/about.html

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

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

但动作不匹配,Catalystdefault改为运行动作。我究竟做错了什么?

4

2 回答 2

4

Catalyst subversion 中的 rev 10406 是针对您的问题的失败测试,​​我们可以确认这是一个错误。这已经永远被破坏了,不幸的是没有人给我们一个错误报告或“官方”之前发现它:/

本周我将尝试修复(或让其他人修复它),一旦完成,我们将发布 5.80005,因为在主干中已经准备好足够的其他修复,值得这样做。

感谢所有引起核心团队关注的人,singingfish++

于 2009-06-01T08:49:31.700 回答
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
于 2009-06-01T00:20:16.350 回答