首页 > 解决方案 > 十月CMS分页

问题描述

我使用 octobercms 和用户扩展插件(Clacke)。我尝试呈现分页,因为现在我有很多注册用户并且他们显示在一个页面上。

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

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中进行更改

public function randomUsers()
    {


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


    }

但又是同样的错误。

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

public function randomUsers()
    {

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

    }

再次没有成功。谁能给我一些导航和帮助来解决这个问题?

标签: phplaraveloctobercms

解决方案


如果您正在使用random users function from \classes\UserManager.php

我检查了代码,发现它使用了Illuminate\Support\CollectionObject. 所以,因为Collection Object分页的工作方式不同

你需要使用forPage方法。

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

利用forpage

// 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它会很好。

如有任何疑问,请发表评论。


推荐阅读