我有一个带有 php 的递归视图,这显然是错误的,所以我必须将其转换为 Blade,以递归调用视图。
我的 php 递归代码(comments.blade.php):
<?php
tree($Comments, 0, 0);
$var = -1;
function tree($Comments, $parent_id = 0, $level=0, $c=0) {
global $var;
foreach($Comments as $Comment) {
if($Comment['parent_id'] == $parent_id) {
If ($level > $var) $var++; else {
for ($i = $var-$level+1; $i>0; $i--) { if ($c < 0) echo '</div> </div>'; else $c--; };
$var=$level;
};
echo '<div class="media">
<div class="media-left">
<a href="#">
<img class="media-object" src="..." alt="...">
</a>
</div>
<div class="media-body">
<h4 class="media-heading">Media heading</h4>';
tree($Comments, $Comment['id'], $level+1,$c);
}
};
};
?>
这就是我正在寻找的(在 comments.blade.php 中:
<div>
@include('recursive', ['comments' => $comments, 'parent_id' => 0, 'level' => 0, 'c' => 0])
</div>
问题是我不知道如何将第一个代码片段中的所有变量转换为blade,因此要创建Recursive.blade.php:
Edit 1:
伙计们请帮助我,我在这个该死的算法上工作了 2 天,但我再次陷入了一个比 2 天前更大的问题:(
对于某些人来说,不明白为什么我坚持使用该代码,因为上面的代码是用于制作像 Reddit 上那样的线程评论的算法,在该算法中有 2x echo 和媒体类 echo。
如果我在媒体类之后连续放置 2 个评论,则下一个评论将与第一个评论一起创建,具有相同的parent_id 的评论,这意味着它们是属于同一评论的子级(在它们之前的父级),如果 2x div 没有放置,这意味着第一个评论之后的下一个评论是第一个评论的子级,依此类推。这是我的算法,我这样做是为了转换为刀片,因为我有一些厚颜无耻的投票按钮,它们使用我将集成到递归设计中的路线,这就是为什么我想转换为刀片,但我不知道如何。 :(