Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 插件DSL方法';请求';不推荐使用。使用'$自我约束>;应用程序->;请求';相反';_Perl_Dancer - Fatal编程技术网

Perl 插件DSL方法';请求';不推荐使用。使用'$自我约束>;应用程序->;请求';相反';

Perl 插件DSL方法';请求';不推荐使用。使用'$自我约束>;应用程序->;请求';相反';,perl,dancer,Perl,Dancer,在perl中,我使用的是Dancer2框架,并使用这个插件 use Dancer2::Plugin::Deferred; use Dancer2::Plugin::Locale::Wolowitz; 对于以下陈述: my $method = request->method(); my $params = request->params; 我在控制台上收到以下警告: Plugin DSL method 'request' is deprecated. Use '$self->

在perl中,我使用的是Dancer2框架,并使用这个插件

use Dancer2::Plugin::Deferred;
use Dancer2::Plugin::Locale::Wolowitz;
对于以下陈述:

my $method = request->method();

my $params = request->params;
我在控制台上收到以下警告:

Plugin DSL method 'request' is deprecated. Use '$self->app->request' instead'.
请给出解决问题的建议,我不确定这两个模块中的哪一个导致了这种情况


谢谢,Dancer2主要是面向对象的。它总是将
$self
传递给路由处理程序。警告很清楚。您不应该使用该DSL关键字,而是通过
$self->app
访问请求

您需要从路由处理程序的参数列表中获取
$self
。在同一个包或任何其他包中使用匿名sub或对命名sub的引用都无关紧要

use Dancer2;

get '/' => \&main::foo;

sub foo {
  my $self = shift;
  return $self->app->request->params;
}

我认为您正在使用Dancer或Dancer2框架,或者Mojolicous框架,但是如果没有看到您的代码,我无法确定。感谢您的欢迎,我已经编辑了我的问题,希望它现在有意义。如果你没有得到它,请让我知道,我可能会修改它,使它更清楚。哪个版本的舞者2?请在终端上运行
perl-MDancer2\99
,包括反斜杠后的空格。我无法在Dancer2 0.206000和Dancer2::Plugin::Deferred 0.007017上复制。你也在用别的东西吗?请再次输入并包含。您需要显示您使用的代码。以我为例。对你有用吗?然后将该技术应用到您的程序中。如果我的有效而你的无效,你就做错了。如果我看不到它,我就帮不了你。谢谢@simbabque,它在get调用中工作得很好,但是我们在ajax调用中遇到了错误,我们将此函数调用为:
ajax'/\u updateTest'=>\&main::foo错误是:
错误@2018-10-29 06:48:42>路由异常:无法在
@I\G处对未定义的值调用方法“app”,请提供一个。如果不知道所有的事实,我就无能为力。现在如果你不把一切都告诉我,那就是在浪费我们的时间。没有什么比猜测更糟糕的了。
ajax['post']=>'/test/testCall'=>\&main::foo
使用Dancer2;获取“/”=>\&main::foo#工作正常#$self对象对于以下类型的调用是未定义的ajax'/\u updateTest'=>\&main::foo;ajax['post']=>'/test/testCall'=>\&main::foo;sub foo{my$self=shift;return$self->app->request->params;}
我们已经用您提供的代码进行了测试,只是更改了调用方式,我指的是ajax和post@simbabque,您可以通过更新调用方式来测试您提供的上述代码。在我的终端有一个路由文件,我在其中更改了调用方法。