从Catalyst模型中访问配置

时间:2012-08-02 11:01:43

标签: perl catalyst

我正在尝试从像这样的模型(设计示例)中访问Catalyst配置哈希:

package Dabadie::Model::DirFind;
use Moose;
use namespace::autoclean;

extends 'Catalyst::Model';use namespace::autoclean;

sub list {
     my ($self, $c) = @_;
     return $c->config();
}

但是,$ c是undef,$ self-> config不返回任何内容。

任何人都可以帮忙解决这个问题吗?

谢谢,

西蒙

1 个答案:

答案 0 :(得分:2)

这是预期的 - 根据MVC设计理念,您的模型应该与控制器逻辑分离。

当您在控制器代码中初始化模型时,可以将$ c作为参数传递,但这会导致您违反模式的“互连”模型和控制器设计,但这样做可能是有意义的 - 是您的模型设置配置参数或只是接收它们?如果您通过模型设置配置参数,则可能存在设计问题。

或者只是将配置哈希作为参数传递而不是模型初始化:

 $c->model('AppModel')->new(config => $configParameters); 

这将要求您在模型中声明moose属性以捕获构造中的config参数。

has 'config' ( isa => 'HASH', is => 'ro' );

有关Moose属性的更多信息here