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' );

ムース属性の詳細はこちら

于 2012-08-02T12:23:12.113 に答える