Cake PHP控制器/模型问题

时间:2012-10-26 14:01:04

标签: php cakephp model

我一直在开始在CakePhP中开发一个应用程序。除了教程之外,我之前没有使用它。所以要明智和“白痴检查”我已经做了一些骨架代码,到目前为止,它已经很好地复制/意大利面代码了。但是:我遇到了麻烦。

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

控制器 - >应用程序/控制器/ VenuesController.php

查看 - >应用/视图/场地/ view.ctp

模型 - >应用程序/型号/ Venue.php

控制器和视图似乎链接正常,我能够像你期望的那样操纵变量/数组。

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

public static function VenueModelTest() {
 return true;
}

我正试图在Controller中运行它:

Venue::VenueModelTest();

我得到的错误如下:

错误:未找到班级“地点”
文件: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();

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

2 个答案:

答案 0 :(得分:0)

请发布您的模型文件。

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

答案 1 :(得分:0)

模型正在自动加载(您的命名约定是现场开启的),只是您正在错误地访问它:

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

$this->Model->action();

所以在你的情况下你会使用:

$this->Venue->VenueModelTest();