2

我已经开始在 CakePhP 中开发一个应用程序。我以前没用过,除了教程。因此,为了明智和“白痴检查”,我已经完成了一些框架代码,到目前为止,它已经很好地复制/粘贴到代码中。然而:我遇到了一个障碍。

我遵循 cakePHP 为标准继承规定的命名约定。似乎是正确的实现看起来像是在使用默认值。任何人都可以看到一个陷阱,或者有什么建议吗?

控制器 -> app/controller/VenuesController.php

查看 -> 应用程序/查看/场地/view.ctp

模型 -> 应用/模型/Venue.php

控制器和视图似乎连接得很好,我可以按照您的期望操作变量/数组。

出于测试目的,我通过在模型中声明这一点进行测试:

public static function VenueModelTest() {
 return true;
}

我正试图在控制器中运行它:

Venue::VenueModelTest();

我得到的错误如下:

错误:找不到类 'Venue'
文件:C:[...]\app\Controller\VenuesController.php
行:43

我尝试过调试:例如 - 我在控制器内部做了一个 var_dump($this->Model) (传递给视图),它只是打印 NULL。这让我觉得路由存在某种形式的问题。

但谁能明白为什么?

提前喝彩。瑞克

*编辑:我可以确认模型没有加载。如果我包括:

$this->loadModel('Venue');

...在控制器的正确位置,它可以工作。

显然这并不理想......任何人都可以窥探为什么它不起作用?干杯瑞克

根据要求,这是完整的主控制器:

<?php

// Venue model
// /app/Model/Venue.php

class Venue extends AppModel // implements ModelInterface
{

    public static function VenueModelTest() {
     return true;
    }

}

?>

*编辑 - 由于金发复制粘贴问题添加了静态。重申这是一个 STATIC 对象(所以应该可以从任何地方访问 - 我认为!)并且调用是:

$venue = Venue::VenueModelTest();

错误如上所述。此外 - 如果您手动强制模型的负载 - 它可以工作。

4

2 回答 2

0

请发布您的模型文件。

确保它使用后缀 .php 而不是 .ctp 并且您没有声明 $this->name = 'xxxx';

于 2012-10-26T15:27:13.727 回答
0

该模型正在自动加载(您的命名约定是正确的),只是您访问它不正确:

在控制器中,您可以像这样访问模型方法:

$this->Model->action();

因此,在您的情况下,您将使用:

$this->Venue->VenueModelTest();
于 2012-10-26T15:34:14.490 回答