由于客户希望拥有违反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获取对模型的完全访问权限?
答案 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