2015-01-08 10 views
-1

저는 지금 수년간 촉매 응용을 구축해 왔습니다. 보기를 여는 중 오류가 발생하는 것은 이번이 처음입니다. 나는 (하나의보기가) 뷰를 호출 할 때, 나는 다음과 같은 오류가 발생합니다 :정의되지 않은 값에서 메서드 "model"을 호출 할 수 없습니다.

....에서 정의되지 않은 값에 방법 "모델"을 호출 할 수 없습니다

의 다음 코드 코드는 Root.pm에서 사용됩니다. 이것은 브라우저에서 오류를 생성하는 것입니다. 다시 한번 말하지만,이 촉매 방법을 사용하여 모델을 호출하는 것은 이번이 처음이 아닙니다.
use mypackage;
my $model = 'mypackage';
my $results = $model->get_my_results();

이 하나가이 전에 발생할 수 :

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

대안은 사용하는 것입니다? 그렇다면 어떻게 해결했는지 알려주실 수 있습니까?

덕분에 원래의 게시물에 표시된대로,
있습니다 편집

, 이것은 펄 촉매 응용 프로그램입니다. $ c는 Catalyst 개체입니다. 다음과 같이 Root.pm 파일에서 $ C는 수신 :

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

+0

당신이 사용하는 어떤 모델을 실종됐다? $ c의 출처를 볼 수 있도록 코드 전체를 붙여 넣으십시오. –

답변

1

오식? 첫 번째 줄에 $c->model을 의미합니까?

+1

질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남기십시오. 자신의 게시물에 언제나 댓글을 달 수 있으며 충분한 [평판] (http://stackoverflow.com/help/whats-reputation)을 갖게되면 [모든 게시물에 댓글을 달 수] 있어야합니다 (http://stackoverflow.com/help/privileges/comment). –

+1

네 비평을 이해합니다. 그러나 나는 아직도 다른 사람들의 게시물에 대해 언급 할 수 없을 정도로 초보자입니다. –

+0

@Secator : 아니요, 질문 일지라도 이것이 답이라고 생각합니다. – ysth

0

그래서 나는 사악한 길을 찾아 냈습니다. 나는 실수로 $ c를 호출하는 것을 잊었다. 따라서 myform()의 $ c에는 아무런 가치가 없습니다. 따라서 "모델"이라는 Catalyst 메소드를 찾을 수 없습니다.

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
.
}