2013-11-11 3 views
1

Я хотел бы знать, можно ли вызвать подпрограмму из шаблона в Perl-катализаторе, а также передать значения этой подпрограмме.как вызвать подпрограмму из шаблона катализатора perl

subrountine:

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

Шаблон: [% CEIL = $ c-> вперед ('/ ВБО/my_goals/mortgage_reduction_program/get_ceil', [])%]

Пожалуйста, дайте мне знать,

ответ

0

Я думаю, что вы cannot.You можете вызвать подпрограмму только от модели.

[% Catalyst.model('xxx').yyy('param1','param2') %] 
0

Выполнение процесса отправки Катализатором для предоставленного примера кажется излишним. Очень просто сделать то, что вам нужно, либо создав плагин Template для обработки функции ceil, либо через конструкцию Template 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.

Смежные вопросы