使えなかったので、いろいろやってみたよ(続・Model::Adapter使ってみたよ)
今日の前の記事にて、YAML::Loaderを使ってモデルクラスを作ってみたけど、Catalystの中でモデルとして使用するのが困難なため、いろいろとやってみましたので、まとめます。
まず、YAMLファイルを読み込む設定は、やはりMyApp.ymlに書きたいなと。
そこで、いろいろ調べたり考えた結果、自分で適当なクラスを作ることにしました。
MyApp::YAML::Loader(すみません、クラス名変ですね)
package MyApp::YAML::Loader; use strict; use warnings; use YAML; sub new { my $class = shift; $class = ref($class) || $class; my $file = shift; my $yaml = YAML::LoadFile($file); my $self = bless {yaml => $yaml}, $class; return $self; } 1;
まぁ、単純ですね。独学で勉強しているのでかなり独特かもしれません。
そして、CatalystのModel::Adapterのヘルパースクリプトで作ったクラスの中身。
package MyApp::Model::YAML; use strict; use warnings; use base 'Catalyst::Model::Adaptor'; __PACKAGE__->config( class => 'MyApp::YAML::Loader', constructor => 'new', ); 1;
そして、CatalystのMyApp.ymlに読み込むYAMLファイルを書き込みます。
Model::YAML: args: ./root/yaml/test.yml
ここまで出来たら、あとはコントロールから下記のようにやれば値が取得できるようになります。
sub default : Private { my ( $self, $c ) = @_; my $model = $c->model('YAML'); $c->stash->{yaml} = $model->{yaml}->{test}; $c->stash->{template} = 'index.tt'; }
一応、これで画面に値が表示されます。
ん〜、こんなんでいいのかなぁ〜。
ご指摘いただけたら、うれしいです。