如何在Views - CakePHP中使用find('all')

时间:2012-04-12 06:07:34

标签: cakephp views cakephp-2.0 findall

我搜索了很多,但我找不到如何使用Rails中使用的视图中的查找('all'),但在这里我得到错误“Undefined property:View :: $ Menu [APP \ Lib \ Cake \ View \ View.php,第804行]“ 'Menu'是我用来从菜单表中获取数据的模型。

我在视图中使用以下代码:

$this->set('test',$this->Menu->find('all'));
print_r($test);

4 个答案:

答案 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($测试); `

这样可行。