2009-09-05 78 views
3

我的CMS工作使用CakePHP,我想创建一个动态菜单是用户可以访问的所有页面相同。所以我想出了在布局中创建(因为它在许多页面和视图中共享),但我似乎不知道如何访问模型并从数据库获取数据来构建菜单。任何帮助表示赞赏。模型访问CakePHP中

回答

16

这是因为 正确的MVC分离 *在Cake中你不应该从视图访问模型。唯一可以访问数据的部分应该是控制器(通过模型),将其交给View,它只显示数据。

因此,在您的全球AppControllerset()中使用beforeFilter回调数据可能是最佳选择。

在紧急情况下,你可以随时通过装载使用ClassRegistry::init所需的类的实例从任何地方访问任何东西,但你真的不应该。 *实际上,在“正确的MVC”中,View直接从模型中获取数据没有问题。您不应该在模板必须这样做,但View相关的代码可以很好地从模型中获取数据以可视化模型状态。它在Cake中并不是那种方式,因为Cake不是正确的MVC,而且默认的Cake视图只是模板。

3

替代方案可能是requestAction,它允许您从视图/布局中调用控制器操作,然后在那些操作中可以访问所需的模型。