Laravel刀片,递归视图,php翻译为刀片
我在php中有一个递归视图,这显然是错误的,所以我必须将其转换为blade,以便对视图进行递归调用 我的php递归代码(comments.blade.php):Laravel刀片,递归视图,php翻译为刀片,laravel,Laravel,我在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
<?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);
}
};
};
?>
<div>
@include('recursive', ['comments' => $comments, 'parent_id' => 0, 'level' => 0, 'c' => 0])
</div>
这就是我想要的(在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);
}
};
};
?>
<div>
@include('recursive', ['comments' => $comments, 'parent_id' => 0, 'level' => 0, 'c' => 0])
</div>
@包括('recursive',['comments'=>$comments,'parent_id'=>0,'level'=>0,'c'=>0])
问题是我不知道如何将第一段代码中的所有变量翻译成blade,因此要创建Recursive.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);
}
};
};
?>
<div>
@include('recursive', ['comments' => $comments, 'parent_id' => 0, 'level' => 0, 'c' => 0])
</div>
编辑1:
<?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);
}
};
};
?>
<div>
@include('recursive', ['comments' => $comments, 'parent_id' => 0, 'level' => 0, 'c' => 0])
</div>
伙计们,请帮帮我,我在这个该死的算法上工作了两天,我再一次陷入了一个比两天前更大的问题:(
对于一些不理解我为什么坚持使用该代码的人来说,是因为上面的代码是在reddit上生成线程注释的算法,在该算法中有2个echo和一个媒体类echo。
如果我在媒体类后面一行的2条评论上放置2x,那么下一条评论将与第一条评论一起创建,第一条评论具有相同的父注释id,这意味着它们是属于相同评论的子注释(在它们之前的父注释),如果没有放置2x div,这意味着first后面的下一条注释是first的子注释,依此类推。这是我的算法,我这样做是为了转换到blade,因为我有一些厚颜无耻的投票按钮,这些按钮使用了我将集成到递归设计中的路由,这就是为什么我想转换到blade,但我不知道如何转换(为什么要递归调用来生成视图,您可以创建一个文件名comment.blade.php并在主刀片文件中运行一个循环,该文件将包含comment.blade.php并传递comment对象或数组,然后comment.blade.php文件将使用该$comment对象或数组的属性 例如:
$Comments = [
[
'body' => 'First comment',
'name' => 'First Commentator'
],
[
'body' => 'Second comment',
'name' => 'Second Commentator'
],
[
'body' => 'Third comment',
'name' => 'Third Commentator'
],
[
'body' => 'Fourth comment',
'name' => 'Fourth Commentator'
],
[
'body' => 'Fifth comment',
'name' => 'Fifth Commentator'
],
[
'body' => 'Sixth comment',
'name' => 'Sixth Commentator'
],
];
在主刀片文件中,可以是index.blade.php或任何其他文件
@foreach($Comments as $Comment)
@include('comment',['comment'=>$comment])
@endforeach
comment.blade.php文件将具有
<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>
</div>
</div>
媒体标题
有一个自动工具可以完成这项工作。请查看
通过运行此命令,可以将多个文件转换为刀片式语法
php php2blade <files directory> <optional output directory>
php php2blade
因为上面的代码是在reddit上生成线程注释的算法,如果我像你那样做,那么我会得到一个注释的静态视图(虚构的父对象id=0)。我真的需要以某种方式转换我在blade中用php提供的东西,有什么帮助吗:(?@DomainFlag)线程注释是否具有相同的html设计,并且仅位于主注释div内?第一个问题是,您看到div class=media code,最后是2?如果我输入2x,下一条注释将使用第一条注释创建,注释具有相同的父注释id,这意味着它们是属于相同注释(父注释)的子注释,如果没有放置2x div,则这意味着first之后的下一条注释是first的子注释,依此类推。这是我的算法,我这样做是为了转换到blade,因为我有一些厚颜无耻的投票按钮,这些按钮使用了我将集成到递归设计中的路线,这就是为什么我想转换到blade,但我不知道如何:(或者,我如何将其集成到php代码中,以便在medialeft类设计下面的路由能够正常工作,但我不喜欢这样:(?我有一个ideea,将那个狗屎算法放在控制器中,这样就不用查看该类媒体,而是创建一个数组/对象,用注释值和特殊值排序(应该放置多少个div),好吗?返回视图显示它们