首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OctoberCMS分页

OctoberCMS分页
EN

Stack Overflow用户
提问于 2021-01-07 10:19:43
回答 1查看 153关注 0票数 0

我使用八进制和用户扩展插件(Clacke)。我试图呈现一个分页,因为目前我有很多注册用户,他们显示在一个页面上。

我使用来自\classes\UserManager.php的随机用户函数

代码语言:javascript
复制
public static function getRandomUserSet($limit = 7)
{
    $returner = new Collection;

    $userCount = User::all()->count();

    if(!isset($userCount) || empty($userCount) || $userCount == 0)
        return [];

    if($userCount < $limit)
        $limit = $userCount;

    $users = User::all(); //paginate(5)

    if(empty($users))
        return $returner;

    $users->random($limit);

    $friends = FriendsManager::getAllFriends();

    foreach($users as $user)
    {
        $userAdd = true;

        if(!$friends->isEmpty())
        {
            foreach($friends as $friend)
            {
                if($user->id == $friend->id)
                {
                    $userAdd = false;
                    break;
                }
            }
        }

        if($user->id == UserUtil::getLoggedInUser()->id)
            $userAdd = false;

        if($userAdd)
        {
            $returner->push($user);
        }
    }

    return $returner->shuffle();


}

尝试通过更改return $returner->paginate(25);$users = User::paginate(25);来实现这一点,但是抛出了一个错误。

在模板呈现期间抛出异常(“方法分页不存在”)。

之后,我尝试在\components\User.php中直接更改

代码语言:javascript
复制
public function randomUsers()
    {


        return UserManager::getRandomUserSet($this->property('maxItems'))->paginate(12);


    }

但同样的错误。

尝试并使用此代码并在default.htm {{ tests.render|raw }}中呈现。

代码语言:javascript
复制
public function randomUsers()
    {

$test = UserManager::getRandomUserSet($this->property('maxItems'));
        
return $test->paginate(10);

    }

又一次没有成功。有人能给我一些导航和帮助修复吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-07 10:32:43

如果您使用的是random users function from \classes\UserManager.php

我检查了代码,发现它使用了Illuminate\Support\Collection对象。因此,由于Collection Object分页的工作方式不同

您需要使用forPage方法。

另一方面,paginateIlluminate\Database\Eloquent\Collection <-的方法,所以这两个集合并不相同

使用forpage

代码语言:javascript
复制
// OLD return UserManager::getRandomUserSet($this->property('maxItems'))
//         ->paginate(12);

TO 

return UserManager::getRandomUserSet($this->property('maxItems'))
           ->forPage(1, 12);

forPage方法类似于forPage(<<PAGE_NO>>, <<NO_OF_ITEM_PER_PAGE>>)

因此,如果您使用forPage,它会工作得很好。

如有任何疑问,请评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65610466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档