我搜索了很多,但我找不到如何使用Rails中使用的视图中的查找('all'),但在这里我得到错误“Undefined property:View :: $ Menu [APP \ Lib \ Cake \ View \ View.php,第804行]“ 'Menu'是我用来从菜单表中获取数据的模型。
我在视图中使用以下代码:
$this->set('test',$this->Menu->find('all'));
print_r($test);
答案 0 :(得分:6)
在Menu模型中创建一个方法,例如getMenu()。在这个方法中,执行find()并获得所需的结果。根据需要修改结果,并在getMenu()方法中修改结果并返回数据。
如果您需要AppController :: beforeFilter()或beforeRender()中的每个页面上的菜单,只需执行
$this->set('menu', ClassRegistry::init('Menu')->getMenu());
如果你不需要它,你可能会更好地使用requestAction从菜单控制器使用此方法获取数据,该控制器将从模型调用getMenu()并返回数据。将它设置在您需要的位置仍然会更好,如果您使用requestAction,您也希望很有可能将其缓存。
答案 1 :(得分:4)
尝试不在视图文件中检索数据。违反MVC规则
在视图文件中尝试:
$menu = ClassRegistry::init('Menu');
pr($menu->find('all'));
答案 2 :(得分:0)
在AppHelper中,
制作以下功能
function getMenu()
{
App::import('Model', 'Menu');
$this->Menu= &new Menu();
$test = array();
$test = $this->Menu->find('all');
return $test;
}
在视图中使用上述功能:
<?php
$menu = $html->getMenu();
print_r($menu);
?>
答案 3 :(得分:0)
Cakephp不允许这样做。
首先使用ClassRegistry :: init(&#39; Model&#39;)创建模型的引用(对象); 然后使用对象
调用find函数 $obj = ClassRegistry::init('Menu');
$ test = $ obj-&gt; find(&#39; all&#39;);
回声&#34;&#34 ;;的print_r($测试); `
这样可行。