模型导入控制器后,cakePHP模型关联丢失

时间:2011-11-16 23:55:12

标签: cakephp recursion model import controller

由于客户希望拥有违反Cake逻辑的URL,我决定使用从cake / libs复制的pages_controller.php来组织我的应用程序。 大多数网站的功能都是从一个URL使用ajax调用到不同的控制器,因此我选择Pages作为主页。

页面没有模型,但我仍然需要访问一些相关的模型,所以我导入它们。

我尝试了所有三种方法:

$this->loadModel('Inventories'); 
----
$Inventories =& ClassRegistry::init('Inventories'); 
----
App::import('Controller', 'Inventories');
$Inventories = new InventoriesController;

每个库存模型似乎都很好,但是当我找到一些记录时:

$(...)->find("all", array(
    'conditions' => array('id' => '1'),
    'recursive'=>2)
);

我只得到结果,好像递归已设置为-1或好像没有关联的模型。 无论我设置递归到哪,都会发生这种情况。 当我在另一个控制器中加载模型时,我得到了适当的递归响应。

如何从pages_controller.php获取对模型的完全访问权限?

1 个答案:

答案 0 :(得分:0)

一个简单但即时的解决方案是简单地填充控制器中的$uses数组:

var $uses = array('Inventories', 'User'); // or whatever models need to be loaded

然而,这被认为是不好的做法,并且很快就会失控。非常方便快速测试。

您可以将功能放在适当命名的控制器中,然后将客户端所需的URL路由到相应的控制器/操作:

http://book.cakephp.org/view/945/Routes-Configuration

一个名为setAction()的鲜为人知的控制器方法(它不在食谱中,只有API)可能是您的解决方案。请参阅:

http://api13.cakephp.org/class/controller#method-ControllersetAction

也在Cake 2.0中

http://api20.cakephp.org/class/controller#method-ControllersetAction