با سلام
من یک CMS با لاراول پیاده سازی کردم، در قسمت وبلاگ این CMS من اومدم و کامنت هام رو اینطوری مدیریت می کنم:
حالا من فقط یک سطح پاسخ رو در نظر گرفتم یعنی فقط برای یک کامنت که parent id نداره پاسخ ثبت میکنم و برای بقیه نه، دلیل اینکارمم مشکل در نمایش کامنت بود.
حالا چطوری کامنت رو نمایش میدم؟
وقتی که دارم پست رو دریافت میکنم با استفاده از دوتا حلقه foreach کامنت و پاسخ هاش رو لود میکنم، به صورت زیر:
<div class="padd-box-sm">
<ol class="comment-list clear-list">
@foreach($post[4] as $comment)
<li class="comment" id="{{'comment_'.$comment->id}}">
<article class="comment-body">
<header class="comment-header">
<div class="comment-author vcard">
<img alt="author-image" src="{{Avatar::create($comment->author)->toBase64()}}"
class="avatar avatar-58 photo" height="58" width="58">
<strong class="fn">{{$comment->author}}</strong>
</div>
<div class="comment-date">
در
<time datetime="2016-07-04T11:33:08+00:00">{{$comment->created_at}}</time>
</div>
</header>
<div class="comment-content clear-mrg">
{{$comment->content}}
</div>
<footer class="comment-footer">
@if(!$comment->replies->isEmpty())
<div class="comment-replys-count">
<a rel="nofollow" class="comment-replys-link" href="#">{{'مشاهده '.$comment->replies->count().' پاسخ'}}</a>
</div>
@endif
<div class="comment-links">
<a href="#reply-to-comment" class="comment-reply-link" id="{{$comment->id}}">پاسخ</a>
</div>
</footer>
</article>
@if($comment->replies)
<ol class="children clear-list">
@foreach($comment->replies as $reply)
<li class="comment">
<article class="comment-body">
<header class="comment-header">
<div class="comment-author vcard">
<img alt="author-image" src="{{Avatar::create($reply->author)->toBase64()}}"
class="avatar avatar-58 photo" height="58" width="58">
<strong class="fn">{{$reply->author}}</strong>
</div>
<div class="comment-date">
در
<time datetime="2016-07-04T11:33:08+00:00">{{$reply->created_at}}</time>
</div>
</header>
<div class="comment-content clear-mrg">
{{$reply->content}}
</div>
</article>
</li>
@endforeach
</ol>
@endif
</li>
@endforeach
</ol>
</div>
شیوه نمایش و تگ های html که استفاده کردم مربوط به قالبی هست که استفاده میکنم، مشکل اینجاست که میتونم سطوح بعدی کامنت رو نیز در نظر بگیرم اما مداوم باید حلقه استفاده بشه که کار زیاد صحیحی نیست، چه راهکاری برای نمایش کامنت و پاسخ ها تا بی نهایت پیشنهاد میدید؟
سلام.
از توابع بازگشتی باید استفاده کنید. یه فایل جدا در نظر بگیرید و در ابتدا سطوح اول رو بهش پاس بدید.
@include('Admin.categories.categoriesListsLoop',['categories'=>$parents])
حالا داخل فایل مورد نطر کدی شبیه به این بزنید.
<ul class="loopUl"
style="border-right: 1px solid rgb({{rand(0,255)}},{{rand(0,255)}},{{rand(0,255)}})">
@foreach($categories as $item)
<li>
<span class="deleteButton" @click="deleteCategory({{$item->id}})">
حذف
<i class="icon-trash"></i>
</span>
<span @click="showEditModal('{{$item->title}}',{{$item->id}})" class="editButton">
<i class="icon-edit"></i>
ویرایش </span>
@if($item->attributes()->count())
<span @click="showAttributes({{$item->id}},'{{$item->title}}')" class="showAttributes">
مشاهده مشخصه ها
<i class="icon-eye"></i>
</span>
@endif
<small>
{{$item->title}}
</small>
</li>
@include('Admin.categories.categoriesListsLoop',['categories'=>$item->children])
@endforeach
</ul>
یعنی داخل خود فایل خودشو صدا بزنید ولی با این تفاوت که فرزندان اون دسته بندی رو اینبار بهش پاس بدید.
این موضوع ارتباطی به روابط polymorphic. نداره. شما یه مدل دارید و از همون واکشی میکنید و نیازی به morph نیست
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟