问题描述
我使用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);
}
又一次没有成功。谁能给我一些导航并帮助解决这个问题?
解决方法
如果使用的是random users function from \classes\UserManager.php
我检查代码,并发现其使用Illuminate\Support\Collection
的Object。这样,对于Collection Object
分页原理不同
您需要使用 forPage
方法。
在另一手中paginate
是{方法{1}}
使用Illuminate\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>>)
,它会正常工作。
如果任何疑问请评论。