0

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

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

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

4 回答 4

6

在您的 Menu 模型中创建一个方法,例如 getMenu()。在此方法中执行 find() 并获得所需的结果。在 getMenu() 方法中根据需要修改结果并返回数据。

如果您在 AppController::beforeFilter() 或 beforeRender() 的每个页面上都需要该菜单,只需执行

$this->set('menu', ClassRegistry::init('Menu')->getMenu());

如果您在任何地方都不需要它,您可能会更好地使用requestAction从 Menus 控制器中使用此方法获取数据,该控制器将从模型中调用 getMenu() 并返回数据。将它设置在你需要的地方会更好,如果你使用 requestAction 你也很可能想要缓存它。

于 2012-04-12T10:05:30.300 回答
4

尽量不要在视图文件中检索数据。违反 MVC 规则

在视图文件中试试这个:

$menu = ClassRegistry::init('Menu');
pr($menu->find('all'));
于 2012-04-12T06:55:37.573 回答
0

Cakephp 不允许这样做。

首先使用 ClassRegistry::init('Model'); 创建模型的引用(对象);然后从使用对象调用查找函数

$obj = ClassRegistry::init('Menu'); $test = $obj->find('all'); 回声“”;print_r($test); `

这将起作用。

于 2014-11-28T10:17:13.950 回答
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);

 ?>
于 2012-04-12T06:30:48.053 回答