2011-09-14 4 views
2

やあ、スタンドアロンのテンプレート言語としてメイソンを使用してエラー

私は電子メールを生成するために、スタンドアロンのテンプレート言語としてHTML ::メイソン1.35を使用しようとしています。以下のテストスクリプトを考えてみましょう:

 
#!/usr/bin/perl 
use strict; 
use warnings; 

use HTML::Mason::Compiler; 
use HTML::Mason; 
use Data::Dumper; 

my $view_info = { 
    name => 'John Smith', 
    dob => '10-10-2010' 
}; 

my $output; 

my $mason_compiler = HTML::Mason::Compiler->new(
    allow_globals => [ qw($view_info) ] 
); 

my $mason_interpreter = HTML::Mason::Interp->new(
    compiler => $mason_compiler, 
    comp_root => '/tmp/', 
    out_method => \$output 
); 

$mason_interpreter->exec('/something.m'); 

print Dumper { 
    output => $output 
}; 

私はそれを実行しようとすると、私は次のエラーを取得する:

 
The following parameter was passed in the call to 
HTML::Mason::Compiler::compile but was not listed in the 
validation options: comp_class 

Stack: 
    [/usr/share/perl5/HTML/Mason/Compiler.pm:191] 
    [/usr/share/perl5/HTML/Mason/ComponentSource.pm:76] 
    [/usr/share/perl5/HTML/Mason/Interp.pm:452] 
    [/usr/share/perl5/HTML/Mason/Request.pm:239] 
    [/usr/share/perl5/HTML/Mason/Request.pm:205] 
    [/usr/share/perl5/Class/Container.pm:275] 
    [/usr/share/perl5/Class/Container.pm:353] 
    [/usr/share/perl5/HTML/Mason/Interp.pm:348] 
    [/usr/share/perl5/HTML/Mason/Interp.pm:342] 
    [./masontest.pl:26] 

は、コンパイラを使用して、ちょうどコンポーネントを解釈することは正常に動作します、しかし、コンパイラを追加しませんこのエラーが発生します。私がここで間違っている何かの手掛かり?

+0

答えとして独自のソリューションを追加し、受け入れられたとしてそれにタグを付け、誰もが、この問題が解決されていることを一目で確認することができますしてください。ソリューションをフォローアップしてくれてありがとう! – daxelrod

+0

私はしたかったが、「あなたの質問に答える」ボタンが見えなかった:/しばらく待つ必要があるかもしれない。それを今修正する:) –

答えて

3

もう1つの解決策ですが、説明はありません。HTML::Mason::Compilerの代わりにHTML::Mason::Compiler::ToObjectをコンパイラとして使用してください。私は現時点でどうして思い出していないのですが、それが私の作業コードにあります。

+0

うん、うまく動作します!なぜこれがうまくいくかを知るには素晴らしいだろう... –

1

A(可能な)解決策:

 
#!/usr/bin/perl 
use strict; 
use warnings; 

use HTML::Mason::Compiler; 
use HTML::Mason; 
use Data::Dumper; 

my $view_info = { 
    name => 'John Smith', 
    dob => '10-10-2010' 
}; 

my $output; 

my $mason_interpreter = HTML::Mason::Interp->new(
    allow_globals => [ qw($view_info) ], 
    comp_root => '/tmp/', 
    out_method => \$output 
); 

$mason_interpreter->set_global('$view_info', $view_info); 
$mason_interpreter->exec('/something.m'); 

print Dumper { 
    output => $output 
}; 
関連する問題