Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP和条件_Php_Cakephp - Fatal编程技术网

CakePHP和条件

CakePHP和条件,php,cakephp,Php,Cakephp,因此,在我的控制器MenuController.php中,我有以下代码: class MenuController extends AppController { public $helpers = array('Html', 'Form'); public function index() { $this->set('menus', $this->Menu->find('all')); $userSpecific =

因此,在我的控制器
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; ?>

更新

为了在我的浏览器中更好地理解这一点,我将我的视图更改为:

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

菜单id用于用户:

结束更新


现在在视图中,它正在使用
$this
并从数据库表返回所有值,如何将视图更改为使用
$userSpecific
,而不是
$this
,我成功地做到了这一点(使
$userSpecific
部分)通过使用,但我只能找到控制器端,而不能找到视图端。我很抱歉,如果这是一个糟糕的问题,只是想学习

您需要在index()函数末尾将数据从控制器发送到视图

您可以这样做:

$this->set('userSpecific', $userSpecific);
或者像这样(我喜欢的方式)

完成此操作后,您可以修改视图以显示特定于用户的字段,如图所示:

<?php foreach ($userSpecific as $menu): ?>

    <?php echo $menu['Menu']['id']; ?>
    <?php echo $menu['Menu']['user_id']; ?>

<?php endforeach; ?>


我会尽快接受这个答案。我想知道你回答的第一个选项和第二个选项之间的区别?试着在这里学习。如果你只发送了一个变量,那么它们几乎是等价的。当您向视图发送大量不同的变量时,它会大放异彩,例如:$this->set(compact('menus','userSpecific','userDetails','callToAction');哦,太酷了。谢谢你的帮助!我想我真的会喜欢Cakephp你说的$userSpecific和$this是什么意思,我不明白你的意思,请解释一下。