在PHP Laravel中添加空格/制表符以区分父注释和子注释?

时间:2018-03-01 10:00:29

标签: php laravel function for-loop foreach

我正在使用Laravel 5.2,我有一个页面,其中包含一个评论'来自用户,它可以被另一个用户回复。我的情况与this stackoverflow case相同。我正在按照正确的答案。但我的工作仍然不太好。子评论没有空格/制表符,因此父评论和子评论之间的差异不能像下图所示。你知道为什么以及如何解决这个问题吗?
这是我的数据库设计:
enter image description here
以下代码在我的控制器中:

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>&nbsp&nbsp
    <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

enter image description here

0 个答案:

没有答案