这是一个非常普遍的Cakephp问题。我正在尝试将来自许多不同模型的模型数据组合到给定页面中。
我正在为我老板的在线简历构建一个简单的内容管理器,这样他就可以通过一个简单的GUI来管理它。所以我有CV的所有不同部分的模型,但需要在单个页面上或通过单个控制器方法组合每个模型的数据。
我的直觉是我要么为'cv'构建一个模型(尽管只会有一个)并将相应的hasMany / belongsTo关联分别构建到'cv'和内容模型中,否则构建一个能够单独向模型控制器发出请求的静态页面。考虑到项目的规模有多小,前者似乎不必要地工作密集,但在后一种情况下,我不知道如何向控制器发出请求以向页面提供模型数据。我确定这很简单,我只是找不到答案!谢谢!
答案 0 :(得分:2)
您可以创建DashboardsController(或任何您想要调用它),然后在Dashboard模型中指定您不需要数据库表:var $useTable = false;
在Config / routes.php文件中,添加:Router::connect('/', array('controller' => 'dashboards', 'action' => 'index'));
以使其成为您的主页(如果您愿意)。
然后,在Dashboard控制器的索引操作中,您可以使用$this->loadModel('Whatever');
,并且您最好从该模型中获取数据:$myData = $this->Whatever->find('all');
。您可以根据需要加载任意数量的模型。
TLDR /简化:
1) Make Dashboard controller with 'index' action
2) Make Dashboard model and specify: var $useTable = false;
3) Set Route to use your Dashboard controller for homepage (or any other page:
`Router::connect('/', array('controller' => 'dashboards', 'action' => 'index'));`
4) Use $this->loadModel('Whatever'); to gain access to that model's methods