我想要做的事非常简单,简单。我想有在同一页上两组不同的分页数据。两组不同取决于不同的型号。为了便于讨论,我们会说他们是ImageItem

我可以设置两个寻呼机的两款车型,并得到正确的一组对象。我能得到正确的寻呼机联系。但是,当涉及到实际遵循的链接参数,既寻呼机读取参数,并假定它们适用于他们。

有卷起这样寻找的东西:

   $this->paginate = array (
        'Item'=>array(
            'conditions'=>array('user_id'=>$id),
            'limit' => 6, 
            'order' => array(
                'Item.votes'=>'desc', 
                'Item.created'=>'desc'
            ),
            'contain'=>array(
                'User', 
                'ItemImage' => array (
                    'order'=>'ItemImage__imageVotes desc'
                )
            )
        ),
        'Image'=>array(
            'limit'=>6,
            'contain'=>array(
                'User',
                'ItemImage'=>array('Item'),
            ),
            'order'=>array(
                'Image.votes'=>'desc',
                'Image.views'=>'desc'
            ),
            'conditions'=>array(
                'Image.isItemImage'=>1,
                'Image.user_id'=>$id
            )
        )
    );
    $this->set('items', $this->paginate('Item'));   
    $this->set('images', $this->paginate('Image'));

这是在控制器中。在我有那种认为看链接如下:

<div class="control"><?php echo $this->Paginator->sort('Newest', 'Image.created', array('model'=>'Image')); ?></div>

然而,产量的链接,看起来像这样:

http://localhost/profile/37/page:1/sort:Image.created/direction:asc

有什么在那里,告诉我打算整理哪个模型分页程序。所以,当我点击链接它会通过Image.created于两种机型进行排序。其结果是一个错误,因为Item不能Image.created进行排序。是不是我做错了吗?或者是这个东西,不是由CakePHP的分页程序支持?

有帮助吗?

解决方案

的最简单的解决办法是实现两个网格作为取自己的数据和使用AJAX元素的元素加载到页。

在唯一的其他选择会如此你排序,或者通过网页步进时传递params用于在两个电网的每个网格修改PARAMS。利奥张贴上面的代码是一个良好的开端。您可以在前面加上从PAGINATE阵列模式键到每个命名PARAM并确保通过所有网址参数的PAGINATE功能,你应该在正确的方向前进。

其他提示

您需要重写该页面的控制器的型号的PAGINATE方法。

我没有类似的东西,也许这个片段将帮助:

function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array())
{
    $pageParams = compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group');
    $this->contain('ModuleType', 'NodeDescriptor');
    $pageItems = $this->find('all',$pageParams);
    $pagesOut = array();
    foreach($pageItems as $pageItem)
    {
        $status = $pageItem['SiteAdmin']['status_id'];
        $moduleInfo = null;
        $nodeTitle = $pageItem['NodeDescriptor']['title'];
        $published = $pageItem['NodeDescriptor']['published'];
        $pageitemID = $pageItem['SiteAdmin']['id'];
        $moduleId =  $pageItem['SiteAdmin']['module_id'];
        $contName =  $pageItem['ModuleType']['controller'];
        if($moduleId)
        {
            $thisModel = ClassRegistry::getObject($moduleType);
            $thisModel->contain();
            $moduleInfo = $thisModel->read(null,$moduleId);
            $moduleInfo = $moduleInfo[$moduleType];
        }
        $pagesOut[] = array(
            'status'=>$status,
            'node'=>$nodeTitle,
            'published'=>$published,
            'info'=>$moduleInfo,
            'module_id'=>$moduleId,
            'contName'=>$contName,
            'pageitem_id'=>$pageitemID);
    }
    return $pagesOut;
}

通过做这种方式,您将获得控制权传递给PAGINATE的参数,这样你就可以通过模型的具体数据,控制标志等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top