Нужна помощь в выяснении ошибки.
Я создал плагин perl Catalyst, который предназначен для предоставления метода замены в Catalyst 5.90115 redirect_and_detach ($ c -> redirect_and_detach). Мой метод замены ничего не делает, кроме вызова Catalyst's redirect_and_detach:
package MyApp::Catalyst::Plugin::Logger;
...
sub my_redirect_and_detach {
my ($c, $uri, $status) = @_;
$c->redirect_and_detach($uri, $status);
}
Я понимаю, что это не добавляет никакой ценности, я просто тестирую, чтобы сначала работал этот простой случай.
Затем я заменяю эту работу вызовите ...
$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 spe c требует определения параметра # 2. Но я не понимаю, почему трассировка стека показывает undef для первого аргумента (думал, что это будет класс / пакет $ c). Я проверил, что $ c успешно передан в качестве первого аргумента и работает внутри my_redirect_and_detatch () для получения параметров запроса.
Кто-нибудь видел проблему?
Заранее спасибо.