/ / Не може да се обади метод "модел" на неопределена стойност при - perl, катализатор, dbix-клас, moosex-types

Не може да се извика метод "модел" на неопределена стойност при - perl, катализатор, dbix-class, moosex-types

Изграждам катализаторни приложения на редицагодини. За първи път получавам грешка при опит да отворя оглед. Когато се обадя на изгледа (има само един изглед), получавам следната грешка:

Не може да се обади метод "модел" на неопределена стойност в ....

Следният фрагмент от кода се използва в Root.pm. Това е, което генерира грешката в браузъра. Отново, това не е първият път, когато използвам този катализаторен метод, за да се обадя на модел.

my $model = $c->model( "mypackage" );
my $result = $model->get_my_results();

Алтернативата е да се използват:
use mypackage;
my $model = "mypackage";
my $results = $model->get_my_results();

Някой някога някога се е сблъскал с това? Ако да, можете ли да ми кажете как сте го решили.

Благодаря

Редактирано
Моля, имайте предвид, както е посочено в оригиналната публикация, това е приложение Perl Catalyst. $ C е обект Catalyst. В файла Root.pm $ c се получава, както следва:

sub myform :Local {
my ($self, $c) = @_;
my $model = $c->model( "mypackage" );
my $results = $model->get_my_results();
.
.
.
}

Отговори:

1 за отговор № 1

Типо? Имаше в предвид $c->model във вашия първи ред?


0 за отговор № 2

Затова разбрах пътя на моите зли начини. Неволно забравих да мине $ c в разговорния метод. Следователно $ c в myform () няма стойност. Следователно, не може да намери катализаторния метод, наречен "модел".

sub myform :Local {
my ($self, $c) = @_;
my $model = $c->model( "mypackage" );
my $results = $model->get_my_results();
.
.
.
}

sub someother_method :Local {
my ($self, $c) = @_;
.
.
.
my $myform_info = $self->myform($c) <--- липсваше $ c
.
}