1

我正在尝试从这样的模型中访问 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 什么也不返回。

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

谢谢,

西蒙娜

4

1 回答 1

2

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

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

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

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

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

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

更多关于 Moose 属性的信息在这里

于 2012-08-02T12:23:12.113 回答