perl – 催化剂不能转向私人行动

perl – 催化剂不能转向私人行动,第1张

概述在 Catalyst我试图转向私人行动做一些工作.这是函数定义: sub get_form :Private :Args(1) { my ($self, $c, $type_id) = @_; #do stuff} 我试着像这样前进: $c->forward('get_form',[$type_id]); 但它只是给了我这个错误: Couldn't forward to command 在 Catalyst我试图转向私人行动做一些工作.这是函数定义:

sub get_form :Private :Args(1) {  my ($self,$c,$type_ID) = @_;  #do stuff}

我试着像这样前进:

$c->forward('get_form',[$type_ID]);

但它只是给了我这个错误:

Couldn't forward to command "get_form": InvalID action or component.

但是,如果我将 *** 作从:Private更改为:Local,那么它可以正常工作.有谁知道这是为什么以及如何解决它?谢谢!

解决方法 您不需要使用:Args(1)用于Catalyst中的私有 *** 作.

From cpan Catalyst Manual:
您可以通过在匿名数组中添加新参数来将它们传递给转发 *** 作.在被调用的方法(或转发的方法)中,您将获得$c-> req-> args中的参数.

sub hello : Global {    my ( $self,$c ) = @_;    $c->stash->{message} = 'Hello World!';    $c->forward('check_message',[qw/test1/]);}sub check_message : Private {    my ( $self,$first_argument ) = @_;    my $also_first_argument = $c->req->args->[0]; # Now = 'test1'    # do something...}

您也可以使用stash $c-> stash-> {typeID};代替.然后,您可以使用$c-> forward(‘priv_method’);直接调用该方法.

例如:

sub hello : Global {        my ( $self,$c ) = @_;        $c->stash->{message} = 'Hello World!';        $c->forward('check_message'); # $c is automatically included    }    sub check_message : Private {        my ( $self,$c ) = @_;        return unless $c->stash->{message};        $c->forward('show_message');    }    sub show_message : Private {        my ( $self,$c ) = @_;        $c->res->body( $c->stash->{message} );    }
总结

以上是内存溢出为你收集整理的perl – 催化剂不能转向私人行动全部内容,希望文章能够帮你解决perl – 催化剂不能转向私人行动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1222729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存