Изграждам катализаторни приложения на редицагодини. За първи път получавам грешка при опит да отворя оглед. Когато се обадя на изгледа (има само един изглед), получавам следната грешка:
Не може да се обади метод "модел" на неопределена стойност в ....
Следният фрагмент от кода се използва в 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
.
}