1

Perl 触媒のテンプレートからサブルーチンを呼び出し、そのサブルーチンに値を渡すことができるかどうかを知りたいです。

サブルーチン:

sub get_ceil : Private{
    my ( $self, $c, $param ) = @_;
    my $value =  ceil($param);
    $c->stash->{ceil} = $value;
}

テンプレート: [% ceil = $c->forward('/vbo/my_goals/mortgage_reduction_program/get_ceil',[])%]

私にお知らせください

4

2 に答える 2

0

モデルからのみサブルーチンを呼び出すことができます。

[% Catalyst.model('xxx').yyy('param1','param2') %]
于 2013-11-11T08:10:03.740 に答える
0

提供されている例の Catalyst ディスパッチ プロセスを実行するのは、やり過ぎのように思えます。ceil 関数を処理するテンプレート プラグインを作成するか、テンプレートUSE var = Class(module)コンストラクトを使用して、必要なことを行うのは非常に簡単です。

どちらも最終的に多かれ少なかれ同じ効果を生み出します。

=== Template/Plugin/MyFunc.pm ===

package Template::Plugin::MyFunc;
use base 'Template::Plugin';
our $VERSION = 0.01;

use strict;
use warnings;

sub new {
    my ($class, $context) = @_;
    bless {
        _CONTEXT => $context,
    }, $class;
}

sub ceil {
    my ($self, $param) = @_;
    return ceil($param)
}

sub other_func {
    ... etc
}

1;

=== some template ===

[% USE MyFunc %]

<td>[% MyFunc.ceil(some_param) %]</td>

ceil()私はそれを調査していませんが、 などの機能を実行するためのテンプレート プラグインfloor()が CPAN にすでに存在していなかったら驚くでしょう。

于 2013-11-13T02:49:51.723 に答える