سلام
توی درس های اشتراک گذاری ویدیو با لاراول بخش سطح بندی کامنت ها تا بینهایت level توضیح داده شده .
جناب موسوی اگر لطف کنید و نحوه صفحه بندی کردن (pagination) کامنت ها را هم بفرمائید.
متشکرم.
منظورم این درس هست
https://roocket.ir/series/video-sharing-project-with-laravel/episode/20
متد paginate هم روی کالکشنهای لاراول موجوده و هم در الکوئنت. هنگامی که میخواهید comment هارو به view پاس بدید . چیزی شبیه مثال زیر:
$comments = Comment::paginate(10);
return view('yourview.blade.php', compact('comments'));
سلام متشکرم از پاسخ شما
این روش رو بلد بودم اگر اون درس رو ببینید کل مجموعه نظرات در قالب یک helper function قرار گرفته و خروجی اون هم یک string هست
function commentdiscussion( Discussion $discussion , $parentId ='0' )
{
$comments = $discussion->commentdiscussions()->where('parent_id', $parentId)->get();
if(count($comments) <= 0) {
return null;
}
$commentBody = '';
foreach ($comments as $comment)
{
$commentBody .='';
$commentBody .='<div class="row no-gutters border">';
$commentBody .='<div class="col-3 color rigchlightyellowtwo item text-center">';
$commentBody .='</div>';
$commentBody .='</div><br>';
$commentBody .='<div class="blog-comment margin-left-comment">' . commentdiscussion($discussion, $comment->id) . '</div>';
}
return $commentBody;
}
خروجی توی blade هم
{!! commentdiscussion($discussion) !!}
توی همچین حالتی میخوام که paginate داشته باشه
البته من برای کوتاه شدن جواب بخشی از function رو حذف کردم که فقط مساله رو عنوان کرده باشم
@sadeqi
در همین هلپر که شما دارید استفاده میکنید ، دارید از مدل Discussion استفاده میکنید و این مدل از Eloquent ORM ارثبری میکنه. و این باعث میشه بتونید بجای متد get از paginate استفاده کنید; به کد زیر دقت کنید:
function commentdiscussion( Discussion $discussion , $parentId ='0' )
{
$comments = $discussion->commentdiscussions()->where('parent_id', $parentId)->paginate(2);
if(count($comments) <= 0) {
return null;
}
$commentBody = '';
foreach ($comments as $comment)
{
$commentBody .='';
$commentBody .='<div class="row no-gutters border">';
$commentBody .='<div class="col-3 color rigchlightyellowtwo item text-center">';
$commentBody .='</div>';
$commentBody .='</div><br>';
$commentBody .='<div class="blog-comment margin-left-comment">' . commentdiscussion($discussion, $comment->id) . '</div>';
}
$commentBody .= '<div>'. $comments->links() .'</div>';
return $commentBody;
}
متشکرم . این روش درست کار میکنه به شرطی که کلاس رو برای لود زیر شاخه ها مجدد صدا نکنیم منظورم این خط هست
$commentBody .='<div class="blog-comment margin-left-comment">' . commentdiscussion($discussion, $comment->id) . '</div>';
وقتی این تابع رو صدا میزنیم توی شمارش تعداد صفحات به مشکل میخوره
به حالت زیر هم میتونید امتحان کنید:
$comments = $discussion->commentdiscussions()->where('parent_id', $parentId);
if ($parentId == 0) {
$comments = $comments->paginate(2);
}
else {
$comments = $comments->get();
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟