我一直在开始在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();
错误如上所述。 此外 - 如果您手动强制模型的负载 - 它可以工作。
答案 0 :(得分:0)
请发布您的模型文件。
确保它使用后缀.php而不是.ctp,并且您没有声明$ this-&gt; name ='xxxx';
答案 1 :(得分:0)
模型正在自动加载(您的命名约定是现场开启的),只是您正在错误地访问它:
在控制器中,您可以访问以下模型方法:
$this->Model->action();
所以在你的情况下你会使用:
$this->Venue->VenueModelTest();