CakePHP和条件

时间:2013-12-20 03:57:17

标签: php cakephp

所以在我的控制器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部分),但我只能找到控制器端而不是视图端。如果这是一个糟糕的问题,我很抱歉,只是想学习。

1 个答案:

答案 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; ?>