我正在使用Laravel 5.2,我有一个页面,其中包含一个评论'来自用户,它可以被另一个用户回复。我的情况与this stackoverflow case相同。我正在按照正确的答案。但我的工作仍然不太好。子评论没有空格/制表符,因此父评论和子评论之间的差异不能像下图所示。你知道为什么以及如何解决这个问题吗?
这是我的数据库设计:
以下代码在我的控制器中:
public function ViewLead(Request $request)
{
$led_code = $request->LED_CODE;
$leads = Leads::leftjoin('CONTACT', 'LEADS.LED_SOURCE', '=', 'CONTACT.CON_CODE')->leftJoin('CLIENT', 'CONTACT.CON_CLIENTCODE', '=', 'CLIENT.CLI_CLIENTCODE')->where('LED_CODE', $led_code)->get();
$comments = Comments::where('COM_LEADS', $led_code)->where('COM_PARENTCODE', '0')->orderBy('COM_CODE', 'asc')->get();
$result = array();
foreach($comments as $comment){
$list = array();
$list = array_merge($list, [['COM_CODE' => $comment->COM_CODE, 'COM_PARENTCODE' => $comment->COM_PARENTCODE, 'COM_COMMENT' => $comment->COM_COMMENT, 'COM_NAME' => $comment->COM_NAME, 'COM_USERNAME' => $comment->COM_USERNAME, 'COM_CREATEDDATE' => $comment->COM_CREATEDDATE, 'COM_LIKE' => $comment->COM_LIKE, 'COM_LEADS' => $comment->COM_LEADS]]);
$result = array_merge($result, $this->get_child_comment($comment->COM_CODE,0, $list));
}
$getdata = ['result'=>$result, 'leads'=>$leads];
return view('lead_view', $getdata);
}
function get_child_comment($pid,$level,$list=array()) {
$sub_comments = Comments::where('COM_PARENTCODE','=',$pid)->where('COM_CODE','!=',$pid)->orderBy('COM_CODE', 'asc')->get();
foreach($sub_comments as $sub_comment){
$space=" "; $sigm='-';
for($j=0; $j<=$level; $j++)
{
$space .=$space;
}
for($j=0; $j<=$level; $j++)
{
$space .= $sigm;
}
$sub_comment->comment = html_entity_decode($space, ENT_QUOTES, "utf-8").' '.$sub_comment->comment;
$list = array_merge($list, array(['COM_CODE' => $sub_comment->COM_CODE, 'COM_PARENTCODE' => $sub_comment->COM_PARENTCODE, 'COM_COMMENT' => $sub_comment->COM_COMMENT, 'COM_NAME' => $sub_comment->COM_NAME, 'COM_USERNAME' => $sub_comment->COM_USERNAME, 'COM_CREATEDDATE' => $sub_comment->COM_CREATEDDATE, 'COM_LIKE' => $sub_comment->COM_LIKE, 'COM_LIKE' => $sub_comment->COM_LIKE, 'COM_LEADS' => $sub_comment->COM_LEADS]));
$list = $this->get_child_comment($sub_comment->COM_CODE, $level+1, $list);
}
return $list;
}
这个是我的刀片视图:
@foreach($result as $getData)
<tr>
<td>
<b>{{ $getData['COM_NAME'] }}</b> <font color="grey">({{ date("d-m-Y H:i", strtotime($getData['COM_CREATEDDATE'])) }})</font><br>{{ $getData['COM_COMMENT'] }}<br><br>
<form action="{{ url('AddLike') }}" method="POST">
<font color="blue"> {{ $getData['COM_LIKE'] }}</font> <button class="btn btn-xs btn-primary" data-id="{{ $getData['COM_LEADS'] }}"><i class="fa fa-thumbs-o-up"></i></button>  
<a onclick="$('.details{{ $getData['COM_CODE'] }}').slideToggle(function(){$('#more').html($('.details{{ $getData['COM_CODE'] }}').is(':visible'));});"><label>Reply</label></a><br>
</form>
<form action="{{ url('AddCommentReply') }}" method="POST">
<div class="details{{ $getData['COM_CODE'] }}" style="display:none">
<br><textarea class="form-control edit" id="" name="com_comment" style="width:90%" placeholder="Type a your reply.." required></textarea>
<button type="submit" class="btn btn-round btn-success">Submit</button>
</div>
</form>
</td>
</tr>
@endforeach