Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel刀片,递归视图,php翻译为刀片_Laravel - Fatal编程技术网

Laravel刀片,递归视图,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中有一个递归视图,这显然是错误的,所以我必须将其转换为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);
        }
  };
};
?>
<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),好吗?返回视图显示它们