perl - 为什么我的 perl Catalyst redirect_and_detach 替换插

寻求帮助找出一个难倒的错误。

我创建了一个 perl Catalyst 插件,旨在为 Catalyst 5.90115 的 redirect_and_detach ($c->redirect_and_detach) 提供一种直接替换方法。我的替换方法只调用 Catalyst 的 redirect_and_detach:

package MyApp::Catalyst::Plugin::Logger;
...

sub my_redirect_and_detach {
  my ($c, $uri, $status) = @_;

  $c->redirect_and_detach($uri, $status);
}

我意识到这没有任何值(value),我只是在测试让这个简单的案例首先起作用。

然后我替换这个工作调用...

$c->redirect_and_detach($someuri);

通过调用我的新插件方法...

$c->my_redirect_and_detach($someuri);

我得到以下(缩写/混淆)错误:

Parameter #2 (undef) to Catalyst::Plugin::RedirectAndDetach::redirect_and_detach was an 'undef', which is not one of the allowed types: scalar
 at /usr/local/share/perl/5.26.1/Catalyst/Plugin/RedirectAndDetach.pm line 18.
    Catalyst::Plugin::RedirectAndDetach::redirect_and_detach(undef, "/myuri", undef) called at /var/app/lib/MyApp/Catalyst/Plugin/Logger.pm line 95
    MyApp::Catalyst::Plugin::Logger::my_redirect_and_detach(MyApp=HASH(0x5628f93e4e60), "/myuri") called at ...

我了解 Catalyst 方法规范要求定义参数 #2。但我不明白为什么堆栈跟踪显示第一个参数为 undef(认为那是 $c 的类/包)。我验证了 $c 作为第一个参数成功传递,并在 my_redirect_and_detatch() 内部工作以提取请求参数。

有人看到这个问题吗?

提前致谢。

最佳答案

结果是 Catalyst 的 redirect_and_attach(),而 $status 如果未提供则默认为 undef,不喜欢实际的 undef $status 参数。解决方案是避免传递未定义的 $status。

关于perl - 为什么我的 perl Catalyst redirect_and_detach 替换插件方法失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60961689/

相关文章:

emacs - 如何将ctags格式文件转换为etags格式文件?

python - Flask App 进行多次登录尝试的奇怪行为

javascript - mxgraph 避免边缘重叠节点或其他边缘

maven - Visual Studio Code 终端无法使用代理

java - 删除后 Netty SslHandler 握手超时

php - 实时服务器上的 Laravel Coinbase API Http 异常错误但适用于 X

unit-testing - 在 Racket 中使用模拟对象进行猴子修补

python - 计数没有。使用 dask 的大型 Parquet 文件中的行数没有内存错误

oracle - 无法使用 confluent CLI : java. sql.SQLExcepti

sql-server - 为什么我不能从我刚刚创建的 View 中选择 *?