Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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:视图与控制器不同步_Cakephp - Fatal编程技术网

CakePHP:视图与控制器不同步

CakePHP:视图与控制器不同步,cakephp,Cakephp,我遇到了一个奇怪的问题,在控制器中,从一个表传递一条记录,但视图最终显示了整个表 我有大量的日志记录,并且非常确定控制器正在通过$this->set()传递一条记录 控制器(联系人控制器:显示列表) 日志中的输出: Debug: Array ( [0] => Array ( [Contact] => Array ( [id] => 504

我遇到了一个奇怪的问题,在控制器中,从一个表传递一条记录,但视图最终显示了整个表

我有大量的日志记录,并且非常确定控制器正在通过$this->set()传递一条记录

控制器(联系人控制器:显示列表)

日志中的输出:

 Debug: Array
(
    [0] => Array
        (
            [Contact] => Array
                (
                    [id] => 504
                    [name] => Michael
                    [city] => New York
                )

        )

)


Debug: show_list : 303
视图文件(show_list.ctp)中,我有

 <div class="contacts index">

   <?php echo print_r($contacts);?> 

在视图文件中,打印表中所有记录的列表。cakephp显示的SQL转储显示正在进行其他SQL调用。然而,目前还不清楚这些电话是从哪里打来的

其余的控制者和行动似乎运作良好,排除了任何腐败问题


以前有没有人遇到过类似的情况?有指针吗?

将paginate()函数的输出传递给视图,这与您自己的find()调用不同


如果您想要与find()相同的条件。将它们传递给paginate()(提示:首先将条件放入数组)

将paginate()函数的输出传递给视图,这与您自己的find()调用不同


如果您想要与find()相同的条件。将它们传递给paginate()(提示:首先将您的条件放入数组)

如果您不需要paginate,因为您只从Db获得一行条目,那么您应该重写
$this->set()
,如下所示:

$this->set('contacts',$contacts);
如果需要分页(?),则需要将整个函数设置为:

$this->paginate = array(
    'conditions' => array(
        'Contact.state_id' => $i_state_id, 
        'Contact.city'=> $str_city
    ),
    'fields' => array(
        'Contact.id', 
        'Contact.name',  
        'Contact.city'
    ),
    'recursive' => -1
);

$this->log ($this->paginate, 'debug');
$this->set('contacts', $this->paginate());
$this->log(__FUNCTION__." : ".__LINE__, 'debug' );

如果您似乎不需要分页,因为您只从Db获得一行条目,那么您应该重写
$this->set()
,如下所示:

$this->set('contacts',$contacts);
如果需要分页(?),则需要将整个函数设置为:

$this->paginate = array(
    'conditions' => array(
        'Contact.state_id' => $i_state_id, 
        'Contact.city'=> $str_city
    ),
    'fields' => array(
        'Contact.id', 
        'Contact.name',  
        'Contact.city'
    ),
    'recursive' => -1
);

$this->log ($this->paginate, 'debug');
$this->set('contacts', $this->paginate());
$this->log(__FUNCTION__." : ".__LINE__, 'debug' );

我需要分页,因为有些查询可能有多条记录。我已经通过了第一步,使用$this->paginate。但是,搜索结果的第二页+未显示有效数据,并抛出与未定义变量、foreach()的无效参数等相关的错误/消息。。。查询参数似乎不适用于第2页、第3页。。。。如何将查询参数发送到后续页面?我需要分页,因为某些查询可能有多条记录。我已经通过了第一步,使用$this->paginate。但是,搜索结果的第二页+未显示有效数据,并抛出与未定义变量、foreach()的无效参数等相关的错误/消息。。。查询参数似乎不适用于第2页、第3页。。。。如何将查询参数发送到后续页面?