/ / Nie można wywołać metody "model" na nieokreślonej wartości at - perl, catalyst, dbix-class, moosex-types

Nie można wywołać metody "model" na niezdefiniowanej wartości at - perl, catalyst, dbix-class, moosex-types

Budowałem aplikacje katalityczne wieluteraz. Po raz pierwszy pojawia się błąd podczas próby otwarcia widoku. Kiedy wywołuję widok (jest tylko jeden widok), pojawia się następujący błąd:

Nie można wywołać metody "model" na niezdefiniowanej wartości w ....

Poniższy fragment kodu jest używany w Root.pm ,. To właśnie generuje błąd w przeglądarce. Ponownie, nie po raz pierwszy używam tej metody katalizatora do wywoływania modelu.

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

Alternatywą jest użycie:
use mypackage;
my $model = "mypackage";
my $results = $model->get_my_results();

Czy ktoś kiedyś to spotkał? Jeśli tak, czy możesz mi powiedzieć, jak to rozwiązałeś.

Dzięki

EDYTOWANY
Zwróć uwagę, jak wskazano w oryginalnym poście, jest to aplikacja Perl Catalyst. $ C jest obiektem Catalyst. W pliku Root.pm $ c otrzymujemy w następujący sposób:

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

Odpowiedzi:

1 dla odpowiedzi № 1

Typo? Miałeś na myśli $c->model w twojej pierwszej linii?


0 dla odpowiedzi nr 2

Więc odkryłem ścieżkę moich złych dróg. Nieumyślnie zapomniałem przekazać $ c w metodzie wywołania. Dlatego $ c w myform () nie ma wartości. W związku z tym nie może znaleźć metody Catalyst o nazwie "model".

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) <--- brakowało $ c
.
}