我搜索了很多,但我找不到如何在 Rails 中使用的视图中使用 find('all'),但在这里我收到错误“未定义的属性:View::$Menu [APP\Lib\ Cake\View\View.php,第 804 行]" 'Menu' 是我用来从菜单表中获取数据的模型。
我在视图中使用以下代码:
$this->set('test',$this->Menu->find('all'));
print_r($test);
我搜索了很多,但我找不到如何在 Rails 中使用的视图中使用 find('all'),但在这里我收到错误“未定义的属性:View::$Menu [APP\Lib\ Cake\View\View.php,第 804 行]" 'Menu' 是我用来从菜单表中获取数据的模型。
我在视图中使用以下代码:
$this->set('test',$this->Menu->find('all'));
print_r($test);
在您的 Menu 模型中创建一个方法,例如 getMenu()。在此方法中执行 find() 并获得所需的结果。在 getMenu() 方法中根据需要修改结果并返回数据。
如果您在 AppController::beforeFilter() 或 beforeRender() 的每个页面上都需要该菜单,只需执行
$this->set('menu', ClassRegistry::init('Menu')->getMenu());
如果您在任何地方都不需要它,您可能会更好地使用requestAction从 Menus 控制器中使用此方法获取数据,该控制器将从模型中调用 getMenu() 并返回数据。将它设置在你需要的地方会更好,如果你使用 requestAction 你也很可能想要缓存它。
尽量不要在视图文件中检索数据。违反 MVC 规则
在视图文件中试试这个:
$menu = ClassRegistry::init('Menu');
pr($menu->find('all'));
Cakephp 不允许这样做。
首先使用 ClassRegistry::init('Model'); 创建模型的引用(对象);然后从使用对象调用查找函数
$obj = ClassRegistry::init('Menu');
$test = $obj->find('all');
回声“”;print_r($test); `
这将起作用。
在 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);
?>