我一直在构建多年的催化剂应用程序。这是我第一次尝试打开视图时出错。当我调用视图(只有一个视图)时,我收到以下错误:
无法在....的未定义值上调用方法“模型”
Root.pm中使用了以下代码片段。这是在浏览器上生成错误的原因。同样,这不是我第一次使用这种催化剂方法来调用模型。
my $model = $c->model( 'mypackage' );
my $result = $model->get_my_results();
另一种方法是使用:
use mypackage;
my $model = 'mypackage';
my $results = $model->get_my_results();
以前有没有人见过这个?如果是的话,你能告诉我你是如何解决的。
由于
EDITED
请注意,如原始帖子所示,这是一个Perl Catalyst应用程序。 $ c是一个Catalyst对象。在Root.pm文件中,收到$ c,如下所示:
sub myform :Local {
my ($self, $c) = @_;
my $model = $c->model( 'mypackage' );
my $results = $model->get_my_results();
.
.
.
}
答案 0 :(得分:1)
错字?你的第一行是$c->model
吗?
答案 1 :(得分:0)
所以,我想出了我邪恶之路的道路。我无意中忘记了在调用方法中传递$ c。因此,myform()中的$ c没有任何价值。因此,它找不到名为“model”的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
.
}