在使用GoogleMapsv3帮助器的CakePHP 2.4应用程序中,我有两个视图:分页列表视图和谷歌地图视图。我想在地图视图上显示所有标记,但是当我使用foreach循环将它们回显到Google地图时,分页帮助程序会逐步进入,并且一次只回显20个标记。
如何在地图视图中禁用PaginatorHelper,以便显示所有结果?
我的foreach循环,被分页助手打断:
foreach ($posts as $post):
$marker_options = array(
'showWindow' => true,
'windowText' => '<b>' . $post['Post']['title'] . '</b>' . '<br>' . $post['Post']['body'],
'markerTitle' => '',
'markerIcon' => 'http://labs.google.com/ridefinder/images/mm_20_green.png',
'markerShadow' => 'http://labs.google.com/ridefinder/images/mm_20_greenshadow.png',
);
echo $this->GoogleMap->addMarker(
"map_canvas",
$post['Post']['id'], array(
'latitude' => $post['Post']['lat'],
'longitude' => $post['Post']['lng']
),
$marker_options);
endforeach; ?>
答案 0 :(得分:1)
这应该发生在您的控制器中。
假设您有一个变量,它会产生差异,让我们说您的网址是:
http://your.server.com/posts/index (for paginated posts)
和
http://your.server.com/posts/index/map for your map view
在控制器中,您应该执行以下操作:
class PostsController extends AppController{
function index($isMap = null){
if($isMap == 'map'){
$this->set('posts', $this->Post->find('all', ...));
} else {
$this->set('posts', $this->paginate());
}
}
这样,根据网址,您将返回完整或分页结果。请记住,加载所有结果,特别是如果添加某种关系可能会降低页面速度。
答案 1 :(得分:0)
解决方案实际上非常简单。除非特别调用,否则分页器不会启动:我最初从我的索引方法复制了我的map方法,该方法也复制了paginator。愚蠢的错误。
有效的方法:
public function map() {
$this->Post->recursive = 0;
$this->set('posts', $this->Post->find('all'));
}