所以在我的控制器MenuController.php
中,我有以下代码:
class MenuController extends AppController {
public $helpers = array('Html', 'Form');
public function index() {
$this->set('menus', $this->Menu->find('all'));
$userSpecific = $this->Menu->find('all', array(
'conditions' => array('Menu.user_id' => '20')
));
}
}
在我看来,我正在做以下事情:
<?php foreach ($menus as $menu): ?>
<?php echo $menu['Menu']['id']; ?>
<?php echo $menu['Menu']['user_id']; ?>
<?php endforeach; ?>
更新
为了在浏览器中更好地理解这一点,我将视图更改为以下内容:
<?php foreach ($menus as $menu): ?>
<p>Menu id <?php echo $menu['Menu']['id']; ?> is for user: <?php echo $menu['Menu']['user_id']; ?></p>
<?php endforeach; ?>
结束更新
现在在视图中,它当前正在使用$this
并返回数据库表中的所有值,如何更改视图以使用$userSpecific
而不是$this
我设法通过使用cookbook得到这一点(制作$userSpecific
部分),但我只能找到控制器端而不是视图端。如果这是一个糟糕的问题,我很抱歉,只是想学习。
答案 0 :(得分:0)
您需要在index()函数的末尾从控制器将数据发送到视图。
你可以这样做:
$this->set('userSpecific', $userSpecific);
或者像这样(我的首选方式)
$this->set(compact('userSpecific');
完成此操作后,您可以修改视图以显示用户特定字段,如下所示:
<?php foreach ($userSpecific as $menu): ?>
<?php echo $menu['Menu']['id']; ?>
<?php echo $menu['Menu']['user_id']; ?>
<?php endforeach; ?>